Anhängen von Text an das erste Vorkommen eines Musters mit sed

Anhängen von Text an das erste Vorkommen eines Musters mit sed

Angenommen, es gibt eine Textdatei wie die folgende:

Hello world
types=""
Mario
types="Game"

Ich möchte das erste Vorkommen des type=""Wortes „Programm“ finden und es anhängen. Ich brauche die Ausgabe wie folgt:

Hello world
types="program"
Mario
types="Game"

Ich muss dies in Unix-Shell-Skripten verwenden. Folgendes habe ich versucht:

sed -i '1,/types=""/s/types=""/types="program"/' filename

So wie der Befehl aussieht, fügt er nur ein, fügt nicht an. Ich habe versucht, etwas hinzuzufügen, a\aber es funktioniert immer noch nicht.

Antwort1

Ihre sedeinzeilige Ersetzung scheint bereits wie beabsichtigt zu funktionieren:

$ cat t.txt
Hello world
types=""
Mario
types="Game"

$ sed '1,/types=""/s/types=""/types="program"/' t.txt

Hello world
types="program"
Mario
types="Game"

Es könnte sich lohnen, Ihre Frage zu bearbeiten, um zu zeigen, wasDuerhalten, wenn Sie Ihren sedBefehl ausführen (ohne die -iOption, die Ergebnisse auf dem Terminal auszugeben).

Übrigens ist Ihr Bereich 1,/types=""/redundant. Sie können ihn wie folgt vereinfachen:

sed '/types=""/s/types=""/types="program"/' t.txt

verwandte Informationen