Nach einiger Verarbeitung habe ich meine Eingabedatei wie unten.
Datei1.txt
12345|john|student
43321|jack|professor
78965|alex|lecturer
Ich muss die obige Datei weiter verarbeiten und brauche daher auch einen Zeilenumbruch am Ende der Zeile. Derzeit kann ich es wie folgt ausführen.
sed 's/$/|/' file1.txt
Der obige Befehl führt zur Ausgabe als,
12345|john|student|
43321|jack|professor|
|
78965|alex|lecturer|
Wie wir sehen können, ist der |
wird auch an Leerzeilen angehängt. Als ich versuchte, |
zu entfernen Zeichen wieder aus leeren Zeilen mit dem folgenden Befehl,
sed 's/|//g' file1.txt
Der |
Charakter wird überall gelöscht. Wie kann ich nur den |
löschen in Leerzeilen? Ich muss auch die Leerzeile beibehalten.
Akzeptierte Antwort:
Aus Ihrem Original können Sie |
hinzufügen zu Zeilen, die nicht leer sind:
Mit sed
:
sed -e '/^$/!s/$/|/' file
Mit perl
:
perl -lpe 's/$/|/ if length' file
Wenn Sie |
entfernen möchten aus Zeilen, die leer sind (in der zweiten Version):
perl -lpe 's/|// if length == 1'