Ich muss bestimmte Zeilen in einer Textdatei bearbeiten. Ich habe hier ein Muster, pattern.txt
:Wie verwenden Sie grep, um ein Muster in einer Datei zu finden, EDIT IT mit awk (oder etwas anderes), und speichern Sie es dann?
1
3
6
17
etc...
und eine Datei mit Text, file.txt
:
1 text
2 text
3 text
4 text
5 text
etc...
ich die Worte _PUT FLAG HERE
bis zum Ende jeder Zeile von file.txt
auf Linien hinzufügen möchten, das Spiel haben angezeigt durch die pattern.txt
.
Ich habe
grep -F -f pattern.txt file.txt | awk '{print $0 "_PUT FLAG HERE" }'
Aber ich kann nicht einen Weg zu Schubs diese Änderungen wieder in die ursprüngliche Datei scheinen, um herauszufinden, so dass es wie folgt aussieht:
1 text_PUT FLAG HERE
2 text
3 text_PUT FLAG HERE
4 text
5 text
6 teeskjtkljeltsj _PUT FLAG HERE
etc...
Es ist ein viel wie versuchen, tr
zu verwenden, aber viel mehr verschachtelte. Es sollte eine logische Möglichkeit geben, AWK und grep zu stringeln, ich kann mir einfach nicht vorstellen, wie man die Stücke zu einer einzigen Pipe zusammenfügt, und das kann ich nirgends finden. (Wenn Sie einen sed Weg erklären, dies zu tun, erklären Sie bitte die Regex.)
Wenn Sie awk verwenden, können Sie Grep nicht mehr verwenden. Fast alles, was grep kann, kann awk auch tun. Keine Notwendigkeit für eine zusätzliche Rohrverbindung. Das heißt, können Sie vielleicht einige Meta-Code enthalten, der die Logik beschreibt, wie Sie dies vorstellen, sollte dies funktionieren? Ich verstehe es nicht aus Ihrer Beschreibung. – ghoti
Siehe den dritten grauen Textblock? Ich muss es so aussehen. Sehen Sie, wie pattern.txt die Nummer 1 und 3 enthält? Es sagt mir, ich muss die Zeile mit der Nummer 3 oder 1 darin bearbeiten und die Zeichenfolge PUT_FLAG_HERE an das Ende der Muster anfügen, die pattern.txt entsprechen. – Tom
Verwenden Sie niemals das Wort "pattern", da es sehr vieldeutig ist. Bitte editieren Sie Ihre Frage, um das Wort "pattern" durch "string" oder "regexp" (was auch immer Sie mit "pattern" meinen) überall dort zu verwenden, wo es gerade verwendet wird 'Muster.txt' und '137' in' file.txt'), damit wir sehen können, wie partielle Übereinstimmungen behandelt werden sollen. Schließen Sie auch Fälle wie '99 foo3bar' in' file.txt' ein, damit vorgeschlagene Lösungen, die nicht in der richtigen Spalte für '3' aussehen, fehlschlagen. –