![특정 패턴을 사용하여 파일에서 여러 문자열 세트를 얻는 방법은 무엇입니까?](https://linux55.com/image/114734/%ED%8A%B9%EC%A0%95%20%ED%8C%A8%ED%84%B4%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%EC%97%AC%EB%9F%AC%20%EB%AC%B8%EC%9E%90%EC%97%B4%20%EC%84%B8%ED%8A%B8%EB%A5%BC%20%EC%96%BB%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
편집됨
example.dat 파일의 내용은 다음과 같습니다.
AAA*00* *00* *66*1234567890 *ZZ*ASD-LKJ *170630*1933*U*00401*100000023*0*P*\~SS*IN*2035735845*JWN-DSD*20660606*0606*1023*X*DF4WE43R4RA~BIG*20660606*2771417*19990919*88146417~GE*3*1023~IEA*1*100000023~
필요한 데이터가 세그먼트 내에 있습니다. 세그먼트는 ~
요소라고 하는 필요한 데이터로 구분됩니다. 요소는 로 구분됩니다 *
.
이러한 문자열을 찾는 패턴은 다음과 같습니다.
Segments Element number Needed Data
AAA 6th, 8th & 13th 1234567890, ASD-LKJ & 100000023
SS 6th 1023
BIG 4th 88146417
GE 1st 3
이 데이터를 출력할 수 있는 명령이 있나요?
100000023 1023 3 1234567890 ASD-LKJ 88146417
참고: 실제로 파일에는 매우 긴 문자열 세트와 많은 세그먼트가 포함되어 있지만 세그먼트의 패턴과 요소가 배치된 위치는 동일하게 유지됩니다.
답변1
그러면 샘플 데이터가 샘플 출력 형식으로 출력됩니다.
$ cat script.awk
BEGIN { FS="*"; }
$1=="AAA" { printf "%s\n%s\n%s\n", $7, $9, $14 }
$1=="SS" { print $7 }
$1=="BIG" { print $5 }
$1=="GE" { print $2 }
$ awk -f script.awk example.dat
1234567890
ASD-LKJ
100000023
1023
88146417
3