删除第k个字段为“NA”的所有行

时间:2013-07-06 03:51:43

标签: bash awk lines

修复k,比如说k = 2。假设我们有一个文本文件file.txt,该文件至少有k列,并且列由|符号分隔。如何通过删除第2列等于“NA”的每一行来清除file.txt?可以说输出定向到outfile.txt

3 个答案:

答案 0 :(得分:6)

awk '$2 != "NA"' FS='|'

输入:

111|222|333
444|NA|666
777|888|999

输出:

111|222|333
777|888|999

答案 1 :(得分:2)

我无法访问PC,但有些内容如下:

gawk -F '|' '$2 != "NA"{ print}' file.txt  >outfile.txt

答案 2 :(得分:1)

具有反向匹配的grep也可以这样做:

grep -v '^\([^|]\+|\)\{1\}NA|' file.txt > outfile.txt
#                      ^  ^
#                      |  +-- search pattern
#                      +----- number of leading columns