特定のパターンを使用してファイルから複数の文字列セットを取得するには?

特定のパターンを使用してファイルから複数の文字列セットを取得するには?

編集済み

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

関連情報