Questão Excluir todas as linhas contendo barra invertida do arquivo de texto


Eu tenho um arquivo com conteúdo como este:

apple
b\all
cat
\34
egg

Eu quero remover todas as linhas contendo barras invertidas. Eu tentei usar

sed '/\/d' pdataf.txt

Mas não funcionou. O que devo tentar?


8
2017-09-25 09:24


origem




Respostas:


grep, imprimindo todas as linhas que não possuem \:

grep -v '\\' pdataf.txt

similarmente awk:

awk '!/\\/' pdataf.txt

9
2017-09-25 09:28





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

$ sed '/\\/d' pdataf.txt
apple
cat
egg

11
2017-09-25 09:26





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.

Juntando tudo:

# 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

1
2017-09-25 19:22