我该如何转换这段文字?
输入文件格式:
MOD MAXT:TID=TID190,MT=VCU,MAXT=100;
所需的输出格式:
MOD MAXT:TID,MT,MAXT
MOD MAXT:TID190,VCU,100;
答案1
sed 'h;s/=[^,]*//gp;g;s/[^:,=]*=//g' <in >out
MOD MAXT:TID,MT,MAXT
MOD MAXT:TID190,VCU,100;
答案2
awk -F':|,|=' '{print $1":"$2","$4","$6"\n"$1":"$3","$5","$7}' FILE
我用“|”作为 FS 的 OR,所以基本上 awk 使用“:”或“,”或“=”将行分成多个组件(标记)。
现在我可以按任何顺序打印该行的任何部分,只需插入“\n”作为换行符即可添加第二行。
awk -F':|,|=' '{print $1":"$2","$4","$6"\n"$1":"$3","$5","$7}' <<< 'MOD MAXT:TID=TID190,MT=VCU,MAXT=100;' MOD MAXT:TID,MT,MAXT MOD MAXT:TID190,VCU,100;
答案3
珀里斯利:
perl -ne 'print /(.*:)/, join (",", /(\w+)=/g),"\n", /(.*:)/, join(",", /=([\w;]+)/g),"\n";'
我们使用默认模式匹配(例如当前行)并通过正则表达式选择捕获组。 (然后打印)
给出:
MOD MAXT:TID,MT,MAXT
MOD MAXT:TID190,VCU,100;