如何根据具有唯一字段和来打印行2
?3
4
字段 2 和字段 3 是数字,字段 3 是字母表,文件中总共有 2500 行。
输入:
10,11,12,A,3
10,11,12,A,4
10,11,12,B,3
输出:
10,11,12,B,3
答案1
和awk
:
awk -F, 'NR==FNR{ dup[$2, $3, $4]++; next } (dup[$2, $3, $4]==1)' infile infile
在这里,我们对输入进行infile
两次处理,首先读取文件并根据指定的字段保存每个重复的行$2
,$3
并$4
保存到名为 的关联数组中dup
;++
每次都会增加这些行的出现次数。
在下一个过程中,检查并打印整行,如果指定的字段只出现一次。
答案2
例如:
egrep '^[^,]*,11,12,B,' input.file
解释:
^
从该行的开头
[^,]
任何不是“,”的东西
*
尽可能多次
,11,12,B,
那是你要寻找的