Utilizando sed
para modificar el archivo en su lugar:
sed -i '/^\(report\|-t\(h\|o\)\)/!d' your_file
Esto le indica sed
que elimine todas las líneas que no coinciden con el patrón. El patrón en sí es ^
(inicio de línea), seguido de uno report
o -t
seguido de uno h
o o
.
Debe tener en cuenta que esto no es una modificación real en el lugar: sed
crea una copia de seguridad temporal y sobrescribe el archivo original con ella.
Si desea sed
conservar una copia de respaldo del archivo original (lo que podría ser una buena idea si el archivo contiene datos críticos), otorgue al -i
conmutador una extensión para crear un archivo de respaldo:
sed -i'.bak' -e '/^\(report\|-t\(h\|o\)\)/!d' your_file
modificará your_file
y creará una copia de seguridad del original llamado your_file.bak
.
Una nota al margen
No malinterpretes mis intenciones ni te ofendas por esto, pero he notado que tienes muchas preguntas similares relacionadas con el procesamiento de texto y expresiones regulares. Te aconsejo que empezar a aprender sed
, awk
y grep
por su cuenta para ayudar a acelerar su productividad. Nuevamente, no me malinterpreten, estoy muy feliz de ayudar (como la mayoría de las personas por aquí); es solo que creo que puede beneficiarse enormemente al recoger estas herramientas para su uso diario.
Solo para demostrar lo útil que es la gente por aquí, considere la sugerencia de @ slm en los comentarios a continuación y siéntase libre de visitar esta sala de chat en cualquier momento para preguntas.
Puede usar grep simple para esto:
fuente
-th
/-to
en-t[ho]
.grep -e
oegrep
Utilizando
sed
:fuente
-th
/-to
en-t[ho]
.Utilizando
awk
:fuente
-th
/-to
en-t[ho]
.El interlocutor ha hecho dos puntos:
Las soluciones, en este momento, abordan el primer punto y, por lo tanto, también el segundo. Pero supongamos que el archivo es más grande y se ve así:
¿No sería necesario abordar el segundo punto de OP?
hace el trabajo de eliminar líneas presumiblemente no deseadas que contienen solo espacios, puntos y rayas y retener el resto, sea lo que sea.
Creo que el riesgo de cualquiera de los enfoques es que la naturaleza del archivo no está definida correctamente.
fuente
Usando Perl:
o, para editar en el lugar (como
sed
,perl
también hará una copia de seguridad temporal, por lo que esto no es cierto en la edición en el lugar ):Eso hará una copia del archivo original llamado
filename.bak
y sobrescribirá su archivo original con la versión editada.fuente