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

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

apple
b\all
cat
\34
egg

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

sed '/\/d' pdataf.txt

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

8
задан 25 September 2016 в 02:31

3 ответа

Просто необходимо выйти из обратной косой черты (выйдите из Escape!)

$ sed '/\\/d' pdataf.txt
apple
cat
egg
11
ответ дан 23 November 2019 в 05:22

Необходимо выйти из обратной косой черты (символ ESC) для замены его. И если Ваша версия 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
2
ответ дан 23 November 2019 в 05:22

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

grep -v '\\' pdataf.txt

Аналогично awk:

awk '!/\\/' pdataf.txt
9
ответ дан 23 November 2019 в 05:22

Другие вопросы по тегам:

Похожие вопросы: