编辑awk命令以忽略特定的线条图案

时间:2019-02-28 10:38:52

标签: awk

我正在使用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  

1 个答案:

答案 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