¿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:
FS
contiene su delimitador "ABCD". "ABCD" es una expresión regular.fuente
awk
puede hacer el trabajo si proporciona una-F
marca 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
ABCD
lo que eliminar todo después de eso también es una opción:fuente
awk '{print gensub(/(.*ABCD\.).*/,"\\1",1)}'
.sed
versión:Fuente: /unix/257514/how-to-delete-everything-after-a-certain-pattern-or-a-string-in-a-file
fuente
grep
solució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
-o
le dirá algrep
comando para imprimir sólo las partes coincidentes (no vacío) de una línea coincidente.fuente
cut
puede en sí mismo realizar este trabajo. No se basa en una palabra, sino en.
delimitador.Utilizar :
Salida
xargs
se usa aquí solo para agregar.
al final de la cadenaABCD
.fuente