【发布时间】:2021-08-26 03:11:32
【问题描述】:
我需要搜索一个键并将值附加到 Unix 文件中的每个键:值对
输入文件数据:
1A:trans_ref_id|10:account_no|20:cust_name|30:trans_amt|40:addr
1A:trans_ref_id|10A:ccard_no|20:cust_name|30:trans_amt|40:addr
我想要的输出:
account_no|1A:trans_ref_id
account_no|10:account_no
account_no|20:cust_name
account_no|30:trans_amt
account_no|40:addr
ccard_no|1A:trans_ref_id
ccard_no|10A:ccard_no
ccard_no|20:cust_name
ccard_no|30:trans_amt
ccard_no|40:addr
基本上,我需要将10 或10A 的值附加到每个键:值对并拆分为新行。需要明确的是,这并不总是第二个字段。
我是 sed、awk 和 perl 的新手。我开始使用 awk 提取值:
awk -v FS="|" -v key="59" '$2 == key {print $2}' target.txt
【问题讨论】:
-
awk字段分隔符为'|',然后在':'上使用split()将有助于您入门,GNU Awk User's Guide 您会在 @ 下找到split()987654322@ -
好吧,我对字符串函数很陌生。但正在尝试各种 perl 和 AWK 选项。
-
@nag,当然,请在您的问题中添加您尝试的代码,这在 SO 上受到强烈鼓励。你的努力没有对错,我们都在这里互相学习。
-
@RavinderSingh13,谢谢,我开始使用 awk 提取值:awk -v FS="|" -v key="59" '$2 == key {print $2}' target.txt 但我的密钥可以出现在任何位置