已编辑
这是 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