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?

Antworten:


10

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

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

8

grep, Drucken aller Zeilen, die nicht haben \:

grep -v '\\' pdataf.txt

Ähnlich awk:

awk '!/\\/' pdataf.txt

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.