我正在使用awk命令来过滤出重复的行,我喜欢它的快速和简洁。但是我需要它忽略仅包含(并且仅-因为某些行包含+符号和其他内容,并且我确实希望它们仍然检查是否重复)的行加号,即+
我可以使用其他代码行和一些临时文件来完成此操作,.. 如何编辑此单行命令来执行此操作?这样我就可以保持干净,快速。
当前代码会过滤掉与另一个文件中其他行重复的任何行,这很棒,但是可以忽略+行吗?
这是代码:
awk 'NR==FNR{a[$0]=1;next}!a[$0]' file2 file1 > FilteredFile
文件1:
1234
+
adcs
abba
+
542221
+
jabba
file2:
jingle
1234
+
haad
+
rigor
abba
wiggle
+
542221
jabba
输出:
jingle
+
haad
+
rigor
+
wiggle
答案 0 :(得分:2)
编辑: :由于OP添加了更多详细信息,因此请立即添加此解决方案。
awk 'FNR==NR && $0!="+"{a[$0];next} !($0 in a)' file1 file2
我不确定您为什么使用FNR==NR
,这是我们在读取2个或更多正在读取的Input_files时的情况。因此,我假设您需要uniq值,并且如果我正确理解的话,请删除其中包含+
的行,然后可以尝试以下操作。
awk '$0!="+" && !a[$0]++' Input_file