it-swarm.com.de

Löschen Sie alle Zeilen mit Backslash aus der Textdatei

Ich habe eine Datei mit folgendem Inhalt:

Apple
b\all
cat
\34
Egg

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

sed '/\/d' pdataf.txt

Aber es hat nicht funktioniert. Was soll ich probieren?

8
user110327

Du musst nur dem Backslash entkommen (entkomme der Flucht!)

$ sed '/\\/d' pdataf.txt
Apple
cat
Egg
11
Zanna

grep, druckt alle Zeilen, die nicht \ enthalten:

grep -v '\\' pdataf.txt

Ähnlich awk:

awk '!/\\/' pdataf.txt
9
heemayl

Sie müssen den Backslash (Escape-Zeichen) maskieren, um ihn zu ersetzen. Und wenn Ihre Version von sed dies unterstützt, nimmt die Option -i (in-place) die Änderungen an Ihrer Datei vor, ohne dass Sie eine Zwischendatei angeben müssen. Wenn Sie die Option -i verwenden, beachten Sie, dass sie eine (empfohlene!) Sicherungsdateierweiterung akzeptiert. Wenn Sie jedoch keine angeben, ist es hilfreich, vor Ihrem sed-Befehl -e einzugeben, um sed darüber zu informieren, dass Sie sie nicht verwenden eine Backup-Dateierweiterung.

Alles zusammenfassen:

# 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
2
m0j0hn