grep
, imprimindo todas as linhas que não têm \
:
grep -v '\' pdataf.txt
Similarmente awk
:
awk '!/\/' pdataf.txt
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?
grep
, imprimindo todas as linhas que não têm \
:
grep -v '\' pdataf.txt
Similarmente awk
:
awk '!/\/' pdataf.txt
Você apenas tem que escapar da barra invertida (escapar da fuga!)
$ sed '/\/d' pdataf.txt
apple
cat
egg
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