Видаліть всі рядки, що містять звороту косу риску, з текстового файлу


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

Вам потрібно уникнути зворотної косої риси (символу втечі), щоб замінити її. І якщо ваша версія 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.