将 CSV 更改为键值 (KV) 格式的脚本

将 CSV 更改为键值 (KV) 格式的脚本

我有一个包含以下数据的 CSV 文件:

row_identifier,DBNAME,tblsps_name,Cur_size,Max_size,Used,Free,Percentage
tablespace,MRETF,RERETOSB15_DATA,51200,45600,14284,31316,31
tablespace,MRETF,SPOTLIGHT_DATA,500,2000,259,1741,13
tablespace,MRETF,DDLAUDITING,25,25,2,23,8

我需要以下格式的输出:

tablespace,MRETF,tblsps_name:RERETOSB15_DATA,Cur_size:51200,Max_size:45600,Used:14284,Free:31316,Percentage:31
tablespace,MRETF,tblsps_name:SPOTLIGHT_DATA,Cur_size:500,Max_size:2000,Used:259,Free:1741,

等等..基本上我需要输出作为键(列名称):值

答案1

$ awk -F, 'NR==1{for(i=1;i<=NF;i++)Arr[i]=$i;next}{printf("%s,",$1);for(j=2;j<=NF;j++){printf("%s:%s,",Arr[j],$j)}printf("\n")}' filename.csv
tablespace,DBNAME:MRETF,tblsps_name:RERETOSB15_DATA,Cur_size:51200,Max_size:45600,Used:14284,Free:31316,Percentage:31, 
tablespace,DBNAME:MRETF,tblsps_name:SPOTLIGHT_DATA,Cur_size:500,Max_size:2000,Used:259,Free:1741,Percentage:13,
tablespace,DBNAME:MRETF,tblsps_name:DDLAUDITING,Cur_size:25,Max_size:25,Used:2,Free:23,Percentage:8,

为什么你的输出中没有 DBNAME ?

相关内容