我具有以下CSV格式:
B
我想从每一列中获取数据,除了第一列之外,是数组中的最后一个值,如下所示:
data_disk01,"/opt=920MB;4512;4917;0;4855","/=4244MB;5723;6041;0;6359","/tmp=408MB;998;1053;0;1109","/var=789MB;1673;1766;0;1859","/boot=53MB;656;692;0;729"
我尝试过类似的事情:
data_disk01,"/opt=4855","/=6359","/tmp=1109","/var=1859","/boot=729"
只是字符串,我设法做到了:
awk 'BEGIN {FS=OFS=","} {if(NF==!1);gsub(/\=.*/,",")} 1'
但是无法使其适用于整个CSV。 任何提示表示赞赏。
答案 0 :(得分:2)
如果您输入的内容在引号中从未包含逗号,则简单的sed脚本应该可以工作:
sed 's/=[^"]*;/=/g' file.csv
答案 1 :(得分:1)
能否请您关注awk
,并告诉我这是否对您有帮助。
awk '{gsub(/=[^"]*;/,"=")} 1' Input_file
如果您要将输出保存到Input_file中,则也可以在上面的代码中附加> temp_file && mv temp_file Input_file
。