Sugiro:
awk -F 'ABCD' '{print $1 FS "."}' file
Saída:
171212 16082784 6264 XXX xxxxxxxx Transaction XXXXX abend ABCD.
FS
contém seu delimitador "ABCD". "ABCD" é um regex.
Existe algum comando de corte para cortar com base em uma palavra por exemplo:
171212 16082784 6264 XXX xxxxxxxx Transaction XXXXX abend ABCD. The task has terminated abnormally because of a program check. 16:08:27
Eu quero a saída como:
171212 16082784 6264 XXX xxxxxxxx Transaction XXXXX abend ABCD.
Como se aproximar?
Sugiro:
awk -F 'ABCD' '{print $1 FS "."}' file
Saída:
171212 16082784 6264 XXX xxxxxxxx Transaction XXXXX abend ABCD.
FS
contém seu delimitador "ABCD". "ABCD" é um regex.
awk
pode fazer o trabalho se você fornecer -F
flag com a palavra que deseja usar:
$ awk -F 'test' '{print $1;print $2}' <<< "onetesttwotest"
one
two
No seu caso particular, isso seria:
$ awk -F 'ABCD' '{print $1,FS}' input.txt
171212 16082784 6264 XXX xxxxxxxx Transaction XXXXX abend ABCD
A julgar pelo seu exemplo, você está apenas tentando imprimir materiais até ABCD
, portanto, excluir tudo depois disso também é uma opção:
$ awk '{print substr($0,0,match($0,/ABCD/)+4);}' input.txt
171212 16082784 6264 XXX xxxxxxxx Transaction XXXXX abend ABCD.
sed
versão:
sed 's/ABCD.*/ABCD./' input.txt
171212 16082784 6264 XXX xxxxxxxx Transaction XXXXX abend ABCD.
Fonte: link
grep
solution:
grep -o '^.*ABCD\.' input.txt
A expressão regular corresponderá a cada linha que começar ^
com qualquer caractere .
número repetido de vezes *
e termina com a string ABCD.
A barra invertida \
escapa o significado especial do ponto .
no final.
A opção -o
dirá ao comando grep
para imprimir apenas as partes correspondentes (não vazias) de uma linha correspondente.
cut
pode realizar este trabalho. Não baseado em uma palavra, mas com base no .
delimiter.
Uso:
cut -f 1 -d '.' input.txt | xargs -I "%" echo %.
Resultado
rooney@bond-pc:~$ cat input.txt
171212 16082784 6264 XXX xxxxxxxx Transaction XXXXX abend ABCD. The task has terminated abnormally because of a program check. 16:08:27
rooney@bond-pc:~$
rooney@bond-pc:~$ cut -f 1 -d '.' input.txt | xargs -I "%" echo %.
171212 16082784 6264 XXX xxxxxxxx Transaction XXXXX abend ABCD.
xargs
é usado aqui apenas para anexar .
no final da string ABCD
.