Ich habe eine Liste mit 250 Zeilen. Ich muss sie alle über einen Webserver ausführen, um eine Liste der Ausgaben zu erhalten. Diese Liste gibt jedoch viel mehr Zeilen zurück, als ich interessiert bin. Sagen wir, meine list.txt
ist:
a.1
b.1
etc
dann ist die Ausgabe output.txt
:
a.1 a b c
a.2 b a b
a.3 d k o
b.1 b o p
b.2 o i y
b.3 p i y
etc
Ist es möglich, mit dem Befehl grep nach allen Wörtern in list.txt in der output.txt zu suchen und dann "die gewünschte" Liste want.txt zu generieren? Ich brauche die gesamte Zeile in meiner output.txt. Ich bin neu in der Skripterstellung, aber ich möchte etwas wie
grep list.txt output.txt > wanted.txt
Ich konnte keine Beispiele dafür finden
Antworten:
Ich würde dies ignorieren
grep
. Es ist gut für reguläre Ausdrücke, aber es sieht nicht so aus, als ob Sie das hier wirklich brauchen.comm
kann zwei Dateien vergleichen und Ihnen Schnittpunkte anzeigen. Verwenden Sie Ihre genauen Beispiele:Dies ist schneller als jeder Grep, hängt jedoch (stark) von den zu sortierenden Dateien ab. Wenn dies nicht der Fall ist, können Sie sie vorsortieren, dies ändert jedoch die Ausgabe, sodass sie auch sortiert wird.
Alternativ diese Antwort von iiSeymour lassen Sie tun es mit
grep
. Die Flags fordern eine Eingabedatei an und erzwingen eine Suche mit festen Zeichenfolgen und vollständigen Wörtern. Dies hängt nicht von der Bestellung ab, sondern basiert auf deroutput.txt
Bestellung. Kehren Sie die Dateien um, wenn Sie sie in der Reihenfolge list.txt haben möchten.Wenn Ihr
list.txt
ist wirklich groß, können Sie diese ein wenig mehr iterativ angehen müssen und jede Zeile passieren separat grep. Dies wird die Verarbeitungszeit massiv verlängern. Oben würden Sie einmal lesenoutput.txt
, aber auf diese Weise würden Sie es für jede list.txt-Zeile lesen und verarbeiten. Es ist schrecklich ... Aber es könnte Ihre einzige Wahl sein. Auf der anderen Seite sortiert es dann die Dinge nach derlist.txt
Reihenfolge.quelle
-1
unterdrückt Zeilen, die für die erste Datei-2
eindeutig sind , unterdrückt Zeilen, die für die zweite Datei eindeutig sind, und-3
unterdrückt Zeilen, die beiden gemeinsam sind. Um nur die gemeinsamen Linien zu erhalten, unterdrücken wir daher die Unikate-12
.