(4 Antworten)
Vor 2 Jahren geschlossen.
Ich habe eine Datei mit Zeilen:
india;austria;japan;chile
china;US;nigeria;mexico;russia
Ich möchte alle Vorkommen von Semikolon in jeder Zeile durch z. ;NEW;
, aber erst ab dem 2. Auftreten. Das Ergebnis sollte so aussehen:
india;austria;NEW;japan;NEW;chile
china;US;NEW;nigeria;NEW;mexico;NEW;russia
Ich habe das mit gsub versucht, aber es ersetzt alle Vorkommen:awk '/;/{gsub(/;/,";NEW;") }{print}'
Akzeptierte Antwort:
Das awk
Lösung ist viel länger, aber es ist einfacher, sie generisch zu machen:
awk -F; '{for(i=1;i<NF;i++)printf"%s;%s",$i,(i>=2)?"NEW;":"";print$NF}' replacefile
Möglich ist das mit sed
auch, indem Sie eine Schleife mit dem t
machen Befehl und ersetzen Sie immer das zweite (oder was auch immer Sie wollen) Trennzeichen durch eine temporäre Markierung (normalerweise n
):
sed ':b;s/;/n/2;tb;s/n/;NEW;/g' replacefile