Extract Lines when Column K is empty with AWK/Perl

后端 未结 3 1855
一生所求
一生所求 2021-02-19 04:23

I have data that looks like this:

foo 78 xxx
bar    yyy
qux 99 zzz
xuq    xyz

They are tab delimited. How can I extract lines where column 2 is

相关标签:
3条回答
  • 2021-02-19 04:57

    You need to specifically set the field separator to a TAB character:

    > cat qq.in
      foo     78      xxx
      bar             yyy
      qux     99      zzz
      xuq             xyz
    > cat qq.in | awk 'BEGIN {FS="\t"} $2=="" {print}'
      bar             yyy
      xuq             xyz
    

    The default behaviour for awk is to treat an FS of SPACE (the default) as a special case. From the man page:

    In the special case that FS is a single space, fields are separated by runs of spaces and/or tabs and/or newlines. (my italics)

    0 讨论(0)
  • 2021-02-19 04:57
    perl -F/\t/ -lane 'print unless $F[1] eq q//' myfile.txt
    

    Command Switches

    • -F tells Perl what delimiter to autosplit on (tabs in this case)
    • -a enables autosplit mode, splitting each line on the specified delimiter to populate an array @F
    • -l automatically appends a newline "\n" at the end of each printed line
    • -n processes the file line-by-line
    • -e treats the first quoted argument as code and not a filename
    0 讨论(0)
  • 2021-02-19 05:07
    grep -e '^.*\t\t.*$' myfile.txt
    

    Will grep each line consisting of characters-tab-tab-characters (nothing between tabs).

    0 讨论(0)
提交回复
热议问题