我需要比较两个文件并仅在第一个文件中删除记录(如果它的当前匹配)。我使用了awk
命令,我可以打印记录,但是我需要从第一个文件中删除记录,这两个文件中都有这个记录。
代码:
awk 'NR==FNR{a[$0];next}$0 in a{print $0}' File1 File2
请有人帮我解决此问题。
答案 0 :(得分:0)
需要比较两个文件并仅在第一个文件中删除记录 匹配
您需要进行小修改
首先将您的第二个文件存储在数组a
然后读取您的第一个文件,如果第一个文件中的数组a
print $0
中不存在行(意味着文件2中不存在记录)
它可以是
awk 'NR==FNR{a[$0];next}!($0 in a){print $0}' File2 File1
或者只是
awk 'NR==FNR{a[$0];next}!($0 in a)' File2 File1
答案 1 :(得分:0)
grep
+ comm
解决方案:
示例file1
内容:
111
222
a/aa
333/
bb/b
示例file2
内容:
333/
sss
ccc
a/aa
bb/b
fff
工作:
grep -vxf <(comm -12 <(sort file1) <(sort file2)) file1 > tmp_f && mv tmp_f file1
最终file1
内容:
111
222