簡體   English   中英

如何在awk打印中獲取基於前綴的字段?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM