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