구분 기호로 단어를 사용하여 명령 잘라 내기


10

단어를 기준으로 잘라 내기위한 잘라 내기 명령이 있습니까?

171212 16082784       6264 XXX     xxxxxxxx Transaction XXXXX abend ABCD. The task has terminated abnormally because of a program check. 16:08:27

다음과 같이 출력을 원합니다.

171212 16082784       6264 XXX     xxxxxxxx Transaction XXXXX abend ABCD.

접근하는 방법?


1
무슨 말이야?
Cyrus

ABCD는 구분 기호로 사용하려는 단어입니다. 또한 이것은 로그이며 ABCD와 마찬가지로 다른 키워드도 있습니다. 나는 일반적인 접근 방식을 원합니다
Anony December

답변:


16

나는 제안한다 :

awk -F 'ABCD' '{print $1 FS "."}' file

산출:

171212 16082784 6264 XXX xxxxxxxx 거래 XXXXX 이상 ABCD.

FS분리 문자 "ABCD"를 포함합니다. "ABCD"는 정규식입니다.


4

awk-F사용하려는 단어가있는 플래그 를 제공하면 작업을 수행 할 수 있습니다.

$ awk -F 'test'  '{print $1;print $2}'  <<<  "onetesttwotest"                                                            
one
two

특별한 경우에는 다음과 같습니다.

$ awk -F 'ABCD' '{print $1,FS}' input.txt                                                                                
171212 16082784       6264 XXX     xxxxxxxx Transaction XXXXX abend  ABCD

귀하의 예에서 판단하면 물건을 인쇄하려고 시도하기 ABCD때문에 그 후에 모든 것을 삭제하는 것도 옵션입니다.

$ awk '{print substr($0,0,match($0,/ABCD/)+4);}' input.txt                                                               
171212 16082784       6264 XXX     xxxxxxxx Transaction XXXXX abend ABCD.

그들은 또한 'ABCD'를 유지하려고합니다.

Yea..ABCD가 있어야합니다
Anony December

나는 제안한다 awk '{print gensub(/(.*ABCD\.).*/,"\\1",1)}'.
디저트


2

grep 해결책:

grep -o '^.*ABCD\.' input.txt

정규 표현식은 ^문자가 .여러 번 반복 *되고 문자열로 끝나는 각 줄과 일치 합니다 ABCD.. 백 슬래시 \.끝에 있는 점의 특별한 의미를 이스케이프합니다 .

이 옵션 -ogrep일치하는 줄의 일치하는 (비어 있지 않은) 부분 만 인쇄 하도록 명령에 지시합니다.


2

cut자체적으로이 작업을 수행 할 수 있습니다. 단어가 아니라 .구분 기호를 기반으로 합니다.

사용하다 :

cut -f 1 -d '.' input.txt | xargs -I "%" echo %.

산출

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여기서는 .문자열 끝에 추가 할 때만 사용됩니다 ABCD.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.