Löschen Sie alle Zeilen mit Backslash aus der Textdatei

8

Ich habe eine Datei mit folgendem Inhalt:

apple
b\all
cat
\34
egg

Ich möchte alle Zeilen mit Backslashes entfernen. Ich habe es versucht

sed '/\/d' pdataf.txt

Aber es hat nicht funktioniert. Was soll ich versuchen?

Zanna
quelle

Antworten:

10

Sie müssen nur dem Backslash entkommen (entkommen Sie der Flucht!)

$ sed '/\\/d' pdataf.txt
apple
cat
egg
Zanna
quelle
8

grep, Drucken aller Zeilen, die nicht haben \:

grep -v '\\' pdataf.txt

Ähnlich awk:

awk '!/\\/' pdataf.txt
heemayl
quelle
1

Sie müssen den Backslash (Escape-Zeichen) umgehen, um ihn zu ersetzen. Und wenn Ihre Version von sed dies unterstützt, führt die Option -i (an Ort und Stelle) die Änderungen an Ihrer Datei durch, ohne dass Sie eine Zwischendatei angeben müssen. Wenn Sie die Option -i verwenden, beachten Sie, dass eine (empfohlene!) Sicherungsdateierweiterung akzeptiert wird. Wenn Sie jedoch keine angeben, ist es hilfreich, Ihrem Befehl sed -e voranzustellen, um sed darüber zu informieren, dass Sie nicht verwenden eine Sicherungsdateierweiterung.

Alles zusammen:

# Run sed to remove lines with backslash in them

$ sed -i -e '/\\/d' pdataf.txt

# Cat your file to confirm edits

$ cat pdataf.txt
apple
cat
egg
m0j0hn
quelle