La forma más sencilla es usar solosed
:
sed '/NA/d' test >test.new
Si quieres hacer en -lugar editando con GNUsed
(esto modificará el archivotest
):
sed -i '/NA/d' test
La expresión sed
/NA/d
aplicará el comando d
en todas las líneas de la entrada que coincida con la expresión regular NA
. El comando d
borra líneas.
Si los números de línea fueran todos que tenía, entonces lo siguiente también habría funcionado:
some_command | sed 's/$/d/' | sed -f /dev/stdin test >output
donde some_command
genera los números de línea que desea eliminar del archivo test
.
El primero sed
convierte el flujo de números en un script sed
agregando un d
a cada línea. Una lectura de línea 100d
se interpretaría como "eliminar línea 100". Esto luego se alimenta al segundo sed
como el script real (está leyendo el script a través de/dev/stdin
)y se aplica al archivo test
.
Lo equivalente en un shell que sabe sobre sustituciones de procesos:
sed -f <( some_command | sed 's/$/d/' ) test >output
Pero esto es una tontería si solo desea eliminar las líneas que contienen la cadena NA
.