如:有如下2个文件:
$ cat a.txt
1111111
2222222
3333333
7777777
9999999
$ cat b.txt
1111111
2222222
3333333
4444444
7777777
5555555
6666666
8888888
9999999
将2个文件的差级输出到文件c.txt
$ cat c.txt
4444444
5555555
6666666
8888888
请问如何实现?
如:有如下2个文件:
$ cat a.txt
1111111
2222222
3333333
7777777
9999999
$ cat b.txt
1111111
2222222
3333333
4444444
7777777
5555555
6666666
8888888
9999999
将2个文件的差级输出到文件c.txt
$ cat c.txt
4444444
5555555
6666666
8888888
请问如何实现?
前面一位最简单,我来补个傻办法
$ diff a.txt b.txt | grep -E '^(> |< )' | awk '{print substr($0,3)}' > c.txt
$ cat c.txt
4444444
5555555
6666666
8888888
我再来补充一个:grep -vwf a.txt b.txt >c.txt
注意这种方法需要把文件行数少的放在第一个位置(即a.txt为行数少的那个文件),行数多的放第二个位置,两个文件无需事先排序
另:如果两个文件中的行是经过排序的,还可以使用comm
命令
comm -3 a.txt b.txt
1 回答1.5k 阅读
1.4k 阅读
结果集已经符合你的期望了,再加个输出重定向就可以写入文件了