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

8

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

apple
b\all
cat

egg

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

sed '/\/d' pdataf.txt

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

    
задан user110327 25.09.2016 в 09:24
источник

3 ответа

9

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

grep -v '\' pdataf.txt

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

awk '!/\/' pdataf.txt
    
ответ дан heemayl 25.09.2016 в 09:28
источник
11

Вам просто нужно избегать обратной косой черты (убежать от побега!)

$ sed '/\/d' pdataf.txt
apple
cat
egg
    
ответ дан Zanna 25.09.2016 в 09:26
источник
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
    
ответ дан m0j0hn 25.09.2016 в 19:22
источник

Ознакомьтесь с другими вопросами по меткам