편집됨
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