다음 줄이 포함된 파일이 있습니다.
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
.f
d
|
그러나 그것은 공백을 남긴다. 껍질을 벗겨 사용해도 됩니다 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