Exclui todas as linhas contendo barra invertida do arquivo de texto

8

Eu tenho um arquivo com conteúdo como este:

apple
b\all
cat

egg

Desejo remover todas as linhas que contenham barras invertidas. Eu tentei usar

sed '/\/d' pdataf.txt

Mas não funcionou. O que devo tentar?

    
por user110327 25.09.2016 / 11:24

3 respostas

9

grep , imprimindo todas as linhas que não têm \ :

grep -v '\' pdataf.txt

Similarmente awk :

awk '!/\/' pdataf.txt
    
por heemayl 25.09.2016 / 11:28
11

Você apenas tem que escapar da barra invertida (escapar da fuga!)

$ sed '/\/d' pdataf.txt
apple
cat
egg
    
por Zanna 25.09.2016 / 11:26
1

Você precisa escapar da barra invertida (caractere de escape) para substituí-lo. E se a sua versão do sed suportar, a opção -i (no local) fará as edições no seu arquivo sem que você tenha que fornecer um arquivo intermediário. Além disso, se você usar a opção -i, observe que ela aceita uma extensão de arquivo de backup (recomendado!), Mas se você não fornecer uma, é útil preceder o comando sed com -e para informar ao sed que você não está usando uma extensão de arquivo de backup.

Colocando tudo junto:

# 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
    
por m0j0hn 25.09.2016 / 21:22