如何使用特定模式从文件中获取多组字符串?

如何使用特定模式从文件中获取多组字符串?

已编辑

这是 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

相关内容