Ich werde einige Annahmen treffen (mit denen Sie in Ihrer Frage einverstanden zu sein scheinen).
- Schlüsseldatei ist eine CSV von Schlüsseln (durch Kommas getrennte Liste von Schlüsselwörtern)
- Die Datendatei enthält Schlüssel als erste Wörter, die in der ersten Spalte beginnen
- Diese Einschränkung kann mit einigen weiteren Elementen im Skript verwaltet werden
- Datendatei hat keine zwei Zeilen, die mit demselben Schlüsselwort beginnen
- Wenn diese Einschränkung gebrochen ist, erhalten Sie alle übereinstimmenden Zeilen,
wenn Sie nach dem Schlüssel suchen. - das kann mit einem "
| tail -1
" behandelt werden, um nur die erste Übereinstimmung anzuzeigen (sagen wir)
- Wenn diese Einschränkung gebrochen ist, erhalten Sie alle übereinstimmenden Zeilen,
- Sie fangen an,
rtf
Dateien zu sagen, markieren die Frage jedoch alstext
.
Wenn Sie Dateien im Rich-Text-Format haben, sollten Sie sie zu diesem Zweck in Textdateien konvertieren.
Hier ist ein Skript für dich,
#! / bin / bash IFS = "," # -> um nach durch Kommas getrennten Wörtern in key.txt zu suchen für k in $ (sed's | || 'key.txt) # -----------> um die Suche zu erleichtern tun grep "^ $ k" data.txt # ----> Suchen Sie nach Schlüsselwörtern, die am Anfang jeder Zeile übereinstimmen erledigt
Hier key.txt
ist Ihre erste Datei und data.txt
Ihre zweite Datei.
Die for
Schleife sortiert die Ausgabe in der Reihenfolge der Tasten.
Der sed
Befehl entfernt alle Leerzeichen in der key.txt
Datei, um die Suche zu vereinfachen.
Update für nicht-englische Zeichen (weshalb Sie scheinbar RTF-Datei sagen):
Suchen iconv
Sie nach RTF-8 und konvertieren Sie sie in UTF-8 grep
.
Wenn Sie dies tun möchten, sollte Ihre Frage umformuliert werden als