특정 패턴을 사용하여 파일에서 여러 문자열 세트를 얻는 방법은 무엇입니까?

특정 패턴을 사용하여 파일에서 여러 문자열 세트를 얻는 방법은 무엇입니까?

편집됨

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

관련 정보