use*_*982 3 linux vi awk grep sed
我有2个文件A和B.两个都有超过100行.我想删除两个文件之间的公共行.
A:
asdf123
fdsa123
rrrr456
yyyy555
Run Code Online (Sandbox Code Playgroud)
B:
fdsa123
hhhh888
yyyy555
Run Code Online (Sandbox Code Playgroud)
所以现在文件应该是
A1:
asdf123
rrrr456
Run Code Online (Sandbox Code Playgroud)
B1:
hhhh888
Run Code Online (Sandbox Code Playgroud)
fed*_*qui 11
你可以使用grep这个:
$ grep -vf a b # or grep -vf a b > b1 to save it
hhhh888
$ grep -vf b a # or grep -vf b a > a1 to save it
asdf123
rrrr456
Run Code Online (Sandbox Code Playgroud)
请注意,grep -f file1 file2检查从线file1出现在file2.也就是说,从中获取模式file1.
然后,grep -v代表反转匹配.也就是说,获得与grep命令相反的结果.
你可以试试:
awk -f del.awk fileA fileB > fileB.del
awk -f del.awk fileB fileA > fileA.del
Run Code Online (Sandbox Code Playgroud)
这里del.awk是
NR==FNR {
a[$0]++
next
}
! ($0 in a) {
print
}
Run Code Online (Sandbox Code Playgroud)