So ersetzen Sie das Symbol || durch |""| mit sed

So ersetzen Sie das Symbol || durch |""| mit sed

Ich habe eine Datei, die |als Trennzeichen verwendet. Einige der Datensätze haben leere Zellen ||(nichts darin). Ich versuche, sie mit dem |""|folgenden sed-Befehl zu ersetzen:

sed -i 's/\|\|/\|""|/g' file

Aber das Ergebnis entsprach nicht meinen Erwartungen.

Eingabedatei

A|B|C|D|||E

Gewünschte Ausgabe:

A|B|C|D|""|""|E

Beachten Sie, dass am Anfang und Ende der Datensätze kein „|“ steht.

Jede Hilfe wäre willkommen.

Antwort1

Wiederholen Sie die Ersetzung einfach, bis sich die Ausgabe nicht mehr ändert:

$ echo 'A|B|C|D|||E' | sed ':X;s/||/|""|/g;tX'
A|B|C|D|""|""|E

Wo

  • :Xsetzt das LabelX
  • t Xgehe zum Label X, wenn s///es erfolgreich war

verwandte Informationen