¿Hay algún comando de corte para cortar basado en una palabra, por ejemplo:
171212 16082784 6264 XXX xxxxxxxx Transaction XXXXX abend ABCD. The task has terminated abnormally because of a program check. 16:08:27
Quiero la salida como:
171212 16082784 6264 XXX xxxxxxxx Transaction XXXXX abend ABCD.
¿Cómo acercarse?
command-line
text-processing
cut-command
Anonimo
fuente
fuente

Respuestas:
Yo sugiero:
Salida:
FScontiene su delimitador "ABCD". "ABCD" es una expresión regular.fuente
awkpuede hacer el trabajo si proporciona una-Fmarca con la palabra que desea usar:En su caso particular, eso sería:
A juzgar por su ejemplo, solo está tratando de imprimir cosas, por
ABCDlo que eliminar todo después de eso también es una opción:fuente
awk '{print gensub(/(.*ABCD\.).*/,"\\1",1)}'.sedversión:Fuente: /unix/257514/how-to-delete-everything-after-a-certain-pattern-or-a-string-in-a-file
fuente
grepsolución:La expresión regular coincidirá con cada línea que comienza
^con cualquier carácter.repetido varias veces*y termina con la cadena.ABCD.La barra diagonal inversa\escapa al significado especial del punto.al final.La opción
-ole dirá algrepcomando para imprimir sólo las partes coincidentes (no vacío) de una línea coincidente.fuente
cutpuede en sí mismo realizar este trabajo. No se basa en una palabra, sino en.delimitador.Utilizar :
Salida
xargsse usa aquí solo para agregar.al final de la cadenaABCD.fuente