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


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

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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.