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?
quelle
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?
Sie müssen nur dem Backslash entkommen (entkommen Sie der Flucht!)
$ sed '/\\/d' pdataf.txt
apple
cat
egg
grep
, Drucken aller Zeilen, die nicht haben \
:
grep -v '\\' pdataf.txt
Ähnlich awk
:
awk '!/\\/' pdataf.txt
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