我试图从每一行中提取两个字符串,有些行没有任何一个字符串,有些行只有一个字符串。
我的输入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;
...
我想匹配字符串“Name”或/和“Value”,并将它们输出为:
ID=MD002 Name=Jam
ID=MD003 Name=Jane Value=vip
ID=MD008 Name=George Value=vim
ID=MD0010 Value=vip4
我尝试过:
head 输入.txt | awk '$1 ~/Name|Value/{match($1,/(ID=*);.*(Name*);.*(Value.*)/, name);打印名称[1]名称[2]名称[3]}'
但它确实打印了任何东西。 感谢您的帮助。
最佳答案
您可以尝试关注吗?
awk '
BEGIN{
FS=";"
}
{
for(i=2;i<=NF;i++){
if($i~/^Name|^Value/){
val=(val?val OFS:"")$i
}
}
if(val){
print $1,val;
}
val=""
}
' Input_file
所示示例的输出如下。
ID=MD002 Name=Jam
ID=MD003 Name=Jane Value=vip
ID=MD008 Name=George Value=vim
ID=MD0010 Value=vip4
关于awk - 使用 awk 提取多个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60152628/