Linux 获取另一个文件中不存在的文件中的值
我有两个文件 File1.txt:Linux 获取另一个文件中不存在的文件中的值,linux,bash,shell,loops,sh,Linux,Bash,Shell,Loops,Sh,我有两个文件 File1.txt: docker/registry:2.4.2 docker/rethinkdb:latest docker/swarm:1.0.0 File2.txt: docker/registry:2.4.1 docker/rethinkdb:1.0.0 docker/swarm:1.0.0 输出应为: docker/registry:2.4.2 docker/rethinkdb:latest 换句话说,File1中不存在于File2中的每一行都应该是输出的一部分 我
docker/registry:2.4.2
docker/rethinkdb:latest
docker/swarm:1.0.0
File2.txt:
docker/registry:2.4.1
docker/rethinkdb:1.0.0
docker/swarm:1.0.0
输出应为:
docker/registry:2.4.2
docker/rethinkdb:latest
换句话说,File1中不存在于File2中的每一行都应该是输出的一部分
我试着做了以下几点,但都不起作用
diff File1.txt File2.txt
使用awk,您可以执行以下操作:
awk 'NR==FNR{a[$0];next}!($0 in a)' file2 file1
使用
通信
:
comm -23 <(sort File1.txt) <(sort File2.txt)
comm-23您只需使用grep
即可:
$ grep -v -f file2.txt file1.txt
docker/registry:2.4.2
docker/rethinkdb:latest
如果文件中有很多行,我可能会使用@user000001解决方案。您应该过滤掉所有不以“-”开头的行。管道插入grep'^\-'
以获取所需的所有行,并在前面加上减号。然后,我想您可以执行sed'/^-/'
删除起始行。(直到我找到更好的sed模式为止)还请注意,您可能希望使用-F
来避免将file2.txt
中的每一行都视为正则表达式。