为什么这个 xargs + grep 组合不能正常工作?

为什么这个 xargs + grep 组合不能正常工作?

我有两个文件,team1.txt 和 team2.txt

团队1.txt
===========
亚历克斯
鲍勃
查理
大卫
团队2.txt
===========
亚历克斯
查理
本杰明
泽德
诺亚

我想使用 unix 命令输出 team1 和 team2 中的人员。

$ cat team1.txt | xargs grep -s team2.txt -e
team2.txt:Alex

问题是这是不正确的。Alex 和 Charlie 都属于 team1 和 team2。但由于某种原因,grep在第一场比赛后就停止了。这是为什么?xargs应该在每一行上运行 grep team1.txt

答案1

这是因为 team1.txt 中的 Alex 有一个尾随空格,而 team2.txt 中的 Alex 没有。也就是说:你为什么不直接使用

grep -f team1.txt team2.txt 
Alex
Charlie

这很有效(我清理了多余的空间),并且只需要调用一次命令。

相关内容