특정 접두사가 있는 단어 추출

특정 접두사가 있는 단어 추출

다음 줄이 포함된 파일이 있습니다.

27/12/20 | 05:50:48pm | abcdefgh  |ID:1:418856791 | jack | 1.1.1.1:1111 | IN | GN-4536 | LOL | 0
27/12/20 | 05:51:44pm | abcdefgh  |ID:1:503729784 | jill | 2.2.2.2:2222 | IN | GN-497187 | LOL2 | 0

이와 같은 여러 줄이 포함된 큰 파일이 있습니다. 이 파일에서 합계만 추출하려면 어떻게 해야 합니까 GN-4536? GN-497187뭐든 될 수 있는 것처럼요 GN<-numbers>. 다음 형식으로 출력을 얻는 방법:

GN-number
GN-number
GN-number
GN-number

sed및 명령을 사용해 보았지만 grep숫자를 추출할 수 있습니다.

답변1

그것은 간단합니다 cut:

$ cut -f8 -d'|' filename
 GN-4536 
 GN-497187 

이는 (쉘에서 이스케이프되어야 함) 에 의해 제한되는 필드를 차단합니다 8.fd|

그러나 그것은 공백을 남긴다. 껍질을 벗겨 사용해도 됩니다 tr.

$ cut -f8 -d'|' filename | tr -d ' '
GN-4536
GN-497187

답변2

다음 명령을 사용해 볼 수 있으며 테스트를 거쳐 정상적으로 작동합니다.

awk '{for(i=1;i<=NF;i++){if($i ~ /^GN-[0-9]*$/){print $i}}}' filename

산출

GN-4536
GN-497187

관련 정보