2016-08-05 39 views
1

Ich möchte eine einzelne Zeichenfolge in einer Datei an einer bestimmten Position mit einigen neuen Zeichenfolgen ersetzen. Lets sagen, dass ich für „BAD“ in einer Datei suchen wollen, die wie folgt aussieht: So, jetzt möchte ich ersetzen BAD an PositionErsetzen Sie eine einzelne Zeichenfolge in Datei an einer bestimmten Position mit mehreren neuen Zeichenfolgen

MAD 
DAD 
BAD 
DAB 
BED 

3 mit den folgenden:

BAD-1 
BAD-2 
BAD-3 

Die resultierende Datei sollte sehen wie folgt aus:

MAD 
DAD 
BAD-1 
BAD-2 
BAD-3 
DAB 
BED 

ich habe versucht, etwas mit sed:

sed "s/old/new/g" 

Dies ändert jedoch nur eine einzelne Zeile. Irgendwelche Ideen?

Danke und Gruß!

Antwort

0

Dies sollte funktionieren:

sed 's/^BAD$/BAD-1\nBAD-2\nBAD-3/' file 

MAD 
DAD 
BAD-1 
BAD-2 
BAD-3 
DAB 
BED 

Verwenden awk für LWR:

awk -v n=3 '/^BAD$/{for(i=1; i<=n; i++) print "BAD-" i; next} 1' file 
+0

Thank you! Aber gibt es einen Weg, diesen Schritt zu vereinfachen? Vielleicht mit Range oder Seq? – JohannGold

+0

ok in diesem Fall können Sie "awk" wie in meiner aktualisierten Antwort verwenden. – anubhava

+0

Lassen Sie mich wissen, wenn das nicht funktioniert – anubhava