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?
fuente
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?
Solo tienes que escapar de la barra invertida (¡escapar del escape!)
$ sed '/\\/d' pdataf.txt
apple
cat
egg
grep
, imprimiendo todas las líneas que no tienen \
:
grep -v '\\' pdataf.txt
Del mismo modo awk
:
awk '!/\\/' pdataf.txt
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