如何在vi编辑器或linux中查找和删除两个文件中的重复行

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命令相反的结果.


Håk*_*and 5

你可以试试:

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)