Ich versuche ein kleines Unix-Skript zu schreiben, um eine Datei nach der Zeile zu suchen, die einen bestimmten Begriff in einer anderen Datei enthält. Ich möchte die Ausgabe dieses Befehls in eine neue Datei speichern.Unix: Führen Sie den Befehl grep für jede Zeile aus der Eingabedatei aus und speichern Sie die Ausgabe in Datei
Ich habe eine Datei Begriffe (terms.txt) enthält, die in jeder Zeile einen Begriff hat:
term1
term2
term3
term4
Für jede dieser Hinsicht möchte ich die Linie finden, die diesen Begriff in einer anderen Datei enthält (scores.txt) und hängt die Ausgabe an eine neue Datei (output.txt) an.
Das Skript, das ich mit so weit gekommen sind:
#!/bin/bash
for f in `cat terms.txt`;
do
grep -i $f scores.txt >> output.txt;
done
Irgendwie nicht richtig zu funktionieren scheint. Lauf nur der Befehl grep mit dem Begriff hart codiert gibt mir in der Tat die richtige Linie ich suche:
grep -i "term1" scores.txt
Auch ein einfaches Echo gibt mir die richtigen Bedingungen:
for f in `cat terms.txt`; do echo $f; done
Wenn ich jedoch versuche, dies mit der Variablen $ f zu wiederholen, um den gleichen Befehl für jeden Ausdruck in meiner terms.txt zu wiederholen, funktioniert es nicht.
Könnte mir jemand dabei helfen?
Suchen Sie in der Grep-Manpage nach der Option '-f'. Sie brauchen überhaupt keine Schleife. – 123
@Bouke: Überprüfen Sie die Antwort unten! – Inian