Удалить все строки, содержащие обратную косую черту, из текстового файла

8

У меня есть файл с таким содержимым:

apple
b\all
cat
\34
egg

Я хочу удалить все строки, содержащие обратную косую черту. Я пытался с помощью

sed '/\/d' pdataf.txt

Но это не сработало. Что я должен попробовать?

Занна
источник

Ответы:

10

Вы просто должны избежать обратной косой черты (избежать побега!)

$ sed '/\\/d' pdataf.txt
apple
cat
egg
Занна
источник
8

grepпечатаем все строки, которые не имеют \:

grep -v '\\' pdataf.txt

Точно так же awk:

awk '!/\\/' pdataf.txt
heemayl
источник
1

Вы должны избежать обратной косой черты (escape-символа), чтобы заменить ее. И если ваша версия sed поддерживает это, опция -i (на месте) будет вносить изменения в ваш файл без необходимости предоставления промежуточного файла. Кроме того, если вы используете опцию -i, обратите внимание, что она принимает (рекомендуется!) Расширение файла резервной копии, однако, если вы его не предоставите, полезно поставить команду sed перед -e, чтобы сообщить sed, что вы не используете расширение файла резервной копии.

Собираем все вместе:

# 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
источник