Excluir todas as linhas que contêm barra invertida do arquivo de texto

8

Eu tenho um arquivo que tem conteúdo como este:

apple
b\all
cat
\34
egg

Quero remover todas as linhas que contêm barras invertidas. Eu tentei usar

sed '/\/d' pdataf.txt

Mas não deu certo. O que devo tentar?

Zanna
fonte

Respostas:

10

Você só precisa escapar da barra invertida (escapar da fuga!)

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

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

grep -v '\\' pdataf.txt

Da mesma forma awk:

awk '!/\\/' pdataf.txt
heemail
fonte
1

Você precisa escapar da barra invertida (caractere de escape) para substituí-la. 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ê precise 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 (recomendada!); No entanto, se você não fornecer uma, é útil preceder o comando sed com -e para informar à 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
m0j0hn
fonte