¿Cómo eliminar todas las líneas del archivo de texto que contiene las palabras "gato" y "rata"?
command-line
text-processing
PersonX
fuente
fuente
Respuestas:
grep
acercarse a, aproximarsePara crear una copia del archivo sin líneas que coincidan con "cat" o "rat", se puede usar
grep
en reversa (-v
) y con la opción de palabra completa (-w
).La opción de palabra completa se asegura de que no coincida
cats
o,grateful
por ejemplo. La redirección de salida de su shell se usa (>
) para escribirla en un nuevo archivo. Necesitamos la-E
opción para habilitar las expresiones regulares extendidas para la(one|other)
sintaxis.sed
acercarse a, aproximarseAlternativamente, para eliminar las líneas en el lugar, se puede usar
sed -i
:Los
\b
conjuntos de palabras fronteras y lad
operación borra la línea que coincida con la expresión entre las barras diagonales.cat
yrat
ambos están siendo emparejados por la(one|other)
sintaxis que aparentemente necesitamos escapar con barras invertidas.Consejo: use
sed
sin el-i
operador para probar la salida del comando antes de sobrescribir el archivo.(Basado en Sed - Eliminar una línea que contiene una cadena específica )
fuente
Para probar solo en la terminal, use:
Para eliminar realmente esas líneas del archivo, use:
fuente
Prueba el vim-way:
fuente
Considere si tiene un archivo
file_name
y desea buscar el mouse, pero al mismo tiempo pocas filas del mouse tienen otras palabras comocat
yrat
y no desea verlas en su salida, por lo que la única forma de hacerlo es:fuente
forma de concha portátil
Funciona en
/bin/sh
, que estádash
en Ubuntu, así comoksh
, ybash
. Ligeramente incómodo que tenga que escribir múltiples casos de prueba para cada palabra en unacase
declaración pero portátil. Funciona con casos donde la palabra aparece sola en la línea, al principio, al final de la línea o en el medio de la línea, e ignora dónde podría ser parte de otra palabra.Y así es como funciona:
fuente