我有以下文件:
hello there. let's try&ACCT=1&bla bla bla&EX=1118&anything ss &SERIAL=1011&DEAL=NO
BLA BLA BLA&TOM=1&ACCT=2&LSLSLSLSL&none=1&EX=1218&lord=1&ok=1&SERIAL=201&flag=non
我需要从中提取 的字段值,ACCT=
以便 输出变为:EX=
SERIAL=
1,11/18,1011
2,12/18,201
其中EX
始终是一个 4 位数字,我想在其中插入 a/
作为中间字符。
根据我放入名为 test.in 的文件中的示例输入,以下 awk 命令应该会为您提供所需的输出。
它的作用是将 & 视为字段分隔符。然后,它通过检查该字段是否以 ACCT=、EX= 或 SERIAL= 开头来处理给定行中的每个字段。如果找到该字段,则将该字段分配给适当的变量。然后使用子命令删除该变量的开头。这只会为您提供与该键关联的值。
由于在 EX 键的前 2 位数字后需要一个斜杠 (/),因此这是 EX 的另一个子项。符号 (&) 是一个反向引用,它获取前 2 位数字。
处理完所有字段后,它会打印出该行中找到的值。
尝试使用以下方法,它按预期工作正常
输出
使用
sed
&cat
我达到了解决阶段:)然后
也试试这个简单的循序渐进的
sed
方法:尝试了以下步骤并且效果很好