[英]How I can get a field based on a prefix in the awk print?
我有一個包含以下數據的文件:
toto,1,xsd:integer
titi,true,xsd:boolean
tata,str,attr,xsd:string
實際上每行的格式為:
parameter_name,value,...,xsd:type
parameter_name是fix且位於位置1。值也是fix且位於位置2。但是類型position是可變的,除了位置2和1外,它在任何位置都可以。但是type字段始終包含前綴xsd
。
現在,我試圖執行awk以僅提取參數名稱,值和類型。 目前,我能夠使用以下命令提取參數名稱和值
awk -F"," '{print $1"-"$2}'
但是我無法提取類型字段,因為它的位置是可變的。 如何在awk
輸出中基於其前綴xsd
獲取類型字段?
循環搜索其余字段以查找前綴。
awk -F, '{type="";
for (i = 3; i <= NF; i++) { if($i ~ /^xsd:/) { type = $i; break; } }
print $1"-"$2"-"type; }'
您可以嘗試使用此GNU sed命令,
$ sed -r 's/^([^,]*),([^,]*),.*(xsd:[^,]*).*/\1,\2,\3/g' file
toto,1,xsd:integer
titi,true,xsd:boolean
tata,str,xsd:string
要么
$ sed -r 's/^([^,]*),([^,]*),.*(xsd:[^,]*).*/\1-\2-\3/g' file
toto-1-xsd:integer
titi-true-xsd:boolean
tata-str-xsd:string
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.