Eliminar todas las líneas que contienen barra diagonal inversa del archivo de texto


8

Tengo un archivo que tiene contenido como este:

apple
b\all
cat
\34
egg

Quiero eliminar todas las líneas que contienen barras invertidas. Traté de usar

sed '/\/d' pdataf.txt

Pero no funcionó. ¿Qué debería probar?

Respuestas:


10

Solo tienes que escapar de la barra invertida (¡escapar del escape!)

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

8

grep, imprimiendo todas las líneas que no tienen \:

grep -v '\\' pdataf.txt

Del mismo modo awk:

awk '!/\\/' pdataf.txt

1

Debe escapar de la barra diagonal inversa (carácter de escape) para reemplazarlo. Y si su versión de sed lo admite, la opción -i (en el lugar) hará las ediciones en su archivo sin que tenga que proporcionar un archivo intermedio. Además, si usa la opción -i, tenga en cuenta que acepta una extensión de archivo de respaldo (¡recomendado!), Sin embargo, si no proporciona una, es útil preceder su comando sed con -e para informar a sed que no está usando una extensión de archivo de respaldo.

Poniendolo todo 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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.