Linux 获取另一个文件中不存在的文件中的值

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中的每一行都应该是输出的一部分 我

我有两个文件

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中的每一行都应该是输出的一部分

我试着做了以下几点,但都不起作用

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
中的每一行都视为正则表达式。