3

固定 k,假设 k = 2 用于说明。假设我们有一个文本文件 ,file.txt它至少有 k 列,并且这些列由|符号分隔。如何file.txt通过删除第二列等于“NA”的每一行来清理?假设输出被定向到outfile.txt.

4

3 回答 3

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

输入:

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

输出:

111|222|333
777|888|999
于 2013-07-06T05:25:27.883 回答
2

我无法使用 PC,但可以使用以下内容:

gawk -F '|' '$2 != "NA"{ print}' file.txt  >outfile.txt
于 2013-07-06T04:03:27.433 回答
1

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

grep -v '^\([^|]\+|\)\{1\}NA|' file.txt > outfile.txt
#                      ^  ^
#                      |  +-- search pattern
#                      +----- number of leading columns
于 2013-07-06T08:16:29.467 回答