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?
fonte
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?
Você só precisa escapar da barra invertida (escapar da fuga!)
$ sed '/\\/d' pdataf.txt
apple
cat
egg
grep
, imprimindo todas as linhas que não possuem \
:
grep -v '\\' pdataf.txt
Da mesma forma awk
:
awk '!/\\/' pdataf.txt
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