我有一个包含以下数据的文件:
toto,1,xsd:integer
titi,true,xsd:boolean
tata,str,attr,xsd:string
实际上每行的格式是:
parameter_name,value,...,xsd:type
参数名称是固定的,它位于位置1.该值也是固定的,它位于位置2.但是类型位置是可变的,它可以在除位置2和1之外的任何位置。但是类型字段总是包含前缀xsd
。
现在我试图执行一个awk来只提取参数名称,值和类型。 目前我能够用
提取参数名称和值awk -F"," '{print $1"-"$2}'
但我无法提取类型字段,因为它的位置是可变的。如何根据xsd
输出中的前缀awk
获取类型字段?
答案 0 :(得分:1)
遍历其余字段以查找前缀。
awk -F, '{type="";
for (i = 3; i <= NF; i++) { if($i ~ /^xsd:/) { type = $i; break; } }
print $1"-"$2"-"type; }'
答案 1 :(得分:0)
你可以试试这个GNU sed命令,
$ sed -r 's/^([^,]*),([^,]*),.*(xsd:[^,]*).*/\1,\2,\3/g' file
toto,1,xsd:integer
titi,true,xsd:boolean
tata,str,xsd:string
OR
$ sed -r 's/^([^,]*),([^,]*),.*(xsd:[^,]*).*/\1-\2-\3/g' file
toto-1-xsd:integer
titi-true-xsd:boolean
tata-str-xsd:string