【发布时间】:2020-02-11 22:25:18
【问题描述】:
我试图从每一行中提取两个字符串,有些行没有任何一个字符串,有些行只有一个字符串。
我的输入 input.txt:
ID=MD001;refer=init;loc=tap2
ID=MD002;Name=Jam;refer=init;loc=tap2
ID=MD003;Name=Jane;Value=vip;refer=init;loc=tap2
ID=MD008;Name=George;product=car;vall=some;Value=vim;refer=init;loc=tap2
ID=MD0010;product=cars;Value=vip4;refer=init;loc=tap2
ID=MD0018;product=cars;
...
我想匹配字符串“名称”或/和“值”,并将它们输出为:
ID=MD002 Name=Jam
ID=MD003 Name=Jane Value=vip
ID=MD008 Name=George Value=vim
ID=MD0010 Value=vip4
我试过了:
head input.txt | awk '$1 ~ /Name|Value/ {match($1, /(ID=*);.*(Name*);.*(Value.*)/, name); print name[1] name[2] name[3]}'
但它确实打印了任何东西。 感谢您的帮助。
【问题讨论】:
-
这能回答你的问题吗? Parse out key=value pairs into variables
-
当您申请this answer时,您可以通过
{print map["ID","full"], map["Name","full"], map["Value","full"]}等行轻松完成请求