Wie append etwas am Ende einer bestimmten Zeile des Textes
Möchte ich anfügen, etwas am Ende einer bestimmten Zeile(haben einen bestimmten Charakter).
Zum Beispiel, der text ist:
Line1: I just want to make clear of the problem
Line2: Thanks to all who look into my problem
Line3: How to solve the problem?
Line4: Thanks to all.
Dann möchte ich hinzufügen, "Bitte hilf mir" am Ende
Line2: Thanks to all who look into my problem
Sowie "Line2"
ist das Stichwort. (ich muss anfügen, etwas mit grep diese Zeile durch key-word).
Also dem text nach sollte das script sein:
Line1: I just want to make clear of the problem
Line2: Thanks to all who look into my problem Please help me
Line3: How to solve the problem?
Line4: Thanks to all.
Ich weiß sed
Anhängen können, etwas zu bestimmten Linie, sondern, wenn ich sed '/Line2/a\Please help me'
, wird es fügen Sie eine neue Zeile nach der Zeile. Das ist nicht das, was ich will. Ich will es anfügen an die aktuelle Zeile.
Könnte jemand mir dabei helfen?
Vielen Dank!
InformationsquelleAutor zhaojing | 2010-08-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde wahrscheinlich gehen für John ' s
sed
Lösung, aber da Sie gefragt habenawk
:Dieser Ausgänge:
Einer Erklärung, wie es funktioniert kann hilfreich sein. Denken Sie an die
awk
Skript wie folgt mit den Bedingungen auf der linken und Befehle auf der rechten Seite:Diese beiden
awk
Klauseln ausgeführt werden, für jede Zeile verarbeitet.Wenn die Linie entspricht dem regulären Ausdruck
^Line2:
(im Sinne von "Zeile2:" am Anfang der Zeile), ändern Sie$0
indem Sie Ihre gewünschte string ($0
wird die gesamte Zeile als gelesen inawk
).Wenn die Linie entspricht dem leeren Zustand (alle Linien passen)
print
ausgeführt wird. Diese Ausgänge die aktuelle Zeile$0
.Damit Sie sehen können, es ist nur ein einfaches Programm, das ändert die Zeile, wo notwendig, und gibt die Zeile, die geändert oder nicht.
Darüber hinaus können Sie verwenden möchten
/^Line2:/
als Schlüssel auch für einesed
Lösung, so dass Sie nicht abholenLine2
in der Mitte des Textes oderLine20
durchLine29
,Line200
durchLine299
und so weiter:Vielen Dank für paxdiablo wieder für deine so ausführliche Erklärung. Ja,/^Line2/ besser ist. Guter Vorschlag!
Ich habe einige mehr Details, wie es funktioniert, aber ich würde wohl noch gehen, für die (modifizierten)
sed
Lösung. Es gibt wenig Sinn zu versuchen, um zu töten eine fliege mit einem thermonuklearen Sprengkopf 🙂Ja, paxdiablo, ich Stimme mit Ihnen überein. Aber dein awk-Methode hilft mir, mich viel mehr zu lernen. Nochmals vielen Dank für deine ausführliche awk Erklärung! 🙂
Ich denke, die Art und Weise des awk des paxdiablo und detaillierte Erklärung geben Sie mir einen besseren Einblick in das problem. Ich verstehe die Lösung des Methode nun. Danke!
InformationsquelleAutor paxdiablo
InformationsquelleAutor John Kugelman
Shell scripting
Vielen Dank an alle die Antworten. Um zu verstehen, all die Antworten, macht mir viel mehr erfahren, außer das problem an sich. Da paxdiablo die Antwort ist sehr ausführlich, um mir mehr Klarheit über die Frage, da Stimm ich seine Antwort als akzeptiert. In der Tat, alle Antworten sind sehr hilfreich.
InformationsquelleAutor ghostdog74