2013-07-06 17 views
3

修复k,例如说k = 2以便说明。假设我们有一个文本文件file.txt,它具有至少k列,并且列由|符号分隔。如何通过删除第二列等于'NA'的每一行来清洁file.txt?可以说,输出是针对outfile.txt删除第k个字段为“NA”的所有行

回答

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

输入:

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

输出:

111|222|333 
777|888|999 
+2

将'k'作为变量传递:'awk'$ k!=“NA”'FS ='|' k = 2 file.txt'或'awk -F'|' -v k = 2'$ k!=“NA”'file.txt' –

2

我没有访问PC,而是沿着线的东西:

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

grep与反向匹配也可以:

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