У меня есть файл, который имеет содержание как это:
apple
b\all
cat
\34
egg
Я хочу удалить все строки, содержащие обратные косые черты. Я пытался использовать
sed '/\/d' pdataf.txt
Но это не работало. Что я должен попробовать?
Просто необходимо выйти из обратной косой черты (выйдите из Escape!)
$ sed '/\\/d' pdataf.txt
apple
cat
egg
Необходимо выйти из обратной косой черты (символ 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
grep
, печать всех строк, не имеющих \
:
grep -v '\\' pdataf.txt
Аналогично awk
:
awk '!/\\/' pdataf.txt