ich diese Befehlsfolge haben, die sehr gut in OS X 10.6.8 (Snow Leopard) gearbeitet (die mir sagt, seine grep ist grep (GNU grep) 2.5.1) ...Rohrsuchmuster BSD grep
$ grep -hi 'TERM' file1.txt | cut -d '|' -f 3 | grep -f - file2.txt
(Finden sie alle Zeilen mit TERM in ihnen in file1, je 3 bis auf die eindeutige ID-Nummer im Feld schneiden, dann die IDs in file2 aufzublicken)
Und doch ist diese nicht in OS X 10.11.5 (El Capitan) (was mir seine Grep sagt, ist Grep (BSD grep) 2.5.1-FreeBSD) ...
grep: -: No such file or directory
Ich möchte wirklich nicht GNU Grep auf diesem Rechner installieren. Gibt es eine Möglichkeit, den zweiten grep-Befehl zu reparieren, damit BSD grep funktioniert? Oder ein besserer Weg, um generell vorzugehen?
Einige Codebeispiel:
file1.txt würde wie folgt aussehen:
Jones Inc||000123||foo||bar
TerminatorLLC||000124||foo||bar
Conan LP||000125||foo||bar
Termites-R-Us||000126||foo||bar
file2.txt wie:
000123||210 Main Street||moo||car
000124||Los Angeles||moo||car
000125||Mythical Kingdom||moo||car
000126||Your Woodwork||moo||car
Sie für dieses grep Muster danken gelesen werden. Es funktioniert mit GNU oder BSD Grep. Beide Dateien sind etwa 750k Zeilen. GNU Grep endete in 33 Sekunden; BSD grep läuft seit 4 Minuten und hat mir immer noch nicht das erste Ergebnis gezeigt. Wenn nichts anderes, Ihr so freundlich zur Verfügung gestellt Code hat mich davon überzeugt, dass BSD Grep ist Mist. –
Das awk von @ andlrc scheint zu funktionieren, aber das von @fedorqui scheint nicht. –
@fedorqui Ich schätze die Zeit, die du damit verbracht hast. Aber selbst nach der Überprüfung geht Datei2 der Datei 1 voraus ... es scheint nicht zu funktionieren. –