Warum funktioniert diese Kombination aus xargs und grep nicht richtig?

0

Ich habe zwei Dateien, team1.txt und team2.txt

team1.txt
===========
Alex 
Bob
Charlie
David
team2.txt
===========
Alex
Charlie
Benjamin
Zed
Noah

Ich möchte die Leute, die in Team1 und Team2 sind, mit einem Unix-Befehl ausgeben.

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

Das Problem ist, dass dies falsch ist. Sowohl Alex als auch Charlie sind in Team1 und Team2. Aber aus irgendeinem Grund grepstoppt nach dem ersten Spiel. Warum ist das? xargssollte in jeder Zeile von grep laufen team1.txt.

ktm5124
quelle

Antworten:

1

Das liegt daran, dass Ihr Alex in team1.txt ein Leerzeichen hat und das in team2.txt nicht. Das heißt: Warum benutzt du nicht einfach

grep -f team1.txt team2.txt 
Alex
Charlie

Dies funktioniert gut (ich habe den zusätzlichen Speicherplatz aufgeräumt) und erfordert nur einen Befehl, der einmal aufgerufen wird.

basteln
quelle
Du hast recht, es funktioniert jetzt! Das nachgestellte Leerzeichen ... Der Grund, warum ich Ihren obigen Befehl nicht verwenden kann, ist, dass das ursprüngliche Problem nicht so einfach war wie das von mir angegebene Beispiel - team2.txt enthält in jeder Zeile eine Reihe anderer Texte mit dem Namen.
ktm5124
Trotzdem ist es gut zu wissen, dass du das kannst :-)
ktm5124