可以用 bash 做以下过程吗?
"Id";"Vzor";"Name";"Number";"Number2";"Ship"
"00041534";"MGKHTYE";"2014 TREK TYAX EXPERT, GREY/YELLOW";"100";"100,30";"A"
"00041535";"MGKHTYE";"2014 TREK TYAX EXPERT 29 , BLACK/RED";"100";"453,30";"A"
"00041531";"MGKHTYSP";"2014 OPS TYAX SPORT, WHITE/GREY";"100,90";"306,60";"A"
"00046024";"MGKFAR";"2015 OPS ARGUS, DARK TEAL";"899,90";"100,90";"A"
"00046088";"MGKHFB";"2015 TREK FIREBALL 24 , BLACK";"100,90";"239,90";"A"
"00046026";"MGKHFB";"2015 OPS FIREBALL 26 , BLUE";"100,90";"359,90";"A"
将一列添加到名为“Category”的第一行,并将(我不能做的)添加到各个行,从第 3 列添加该列的前两个单词(这将是类别名称):
"Id";"Vzor";"Name";"Number";"Number2";"Ship";"Category"
"00041534";"MGKHTYE";"2014 TREK TYAX EXPERT, GREY/YELLOW";"100";"100,30";"A";"2014 TREK"
"00041535";"MGKHTYE";"2014 TREK TYAX EXPERT 29 , BLACK/RED";"100";"453,30";"A";"2014 TREK"
"00041531";"MGKHTYSP";"2014 OPS TYAX SPORT, WHITE/GREY";"100,90";"306,60";"A";"2014 OPS"
"00046024";"MGKFAR";"2015 OPS ARGUS, DARK TEAL";"899,90";"100,90";"A";"2015 OPS"
"00046088";"MGKHFB";"2015 TREK FIREBALL 24 , BLACK";"100,90";"239,90";"A";"2015 TREK"
"00046026";"MGKHFB";"2015 OPS FIREBALL 26 , BLUE";"100,90";"359,90";"A";"2015 OPS"
冲击力!
最佳答案
您可以使用这个 awk 命令:
awk 'BEGIN{FS=OFS=";"}
NR==1{print $0,"\"Category\"";next} {
split($3, a, " ");
printf "%s%s%s %s\"\n", $0, OFS, a[1], a[2]
}' file
"Id";"Vzor";"Name";"Number";"Number2";"Ship";"Category"
"00041534";"MGKHTYE";2014 TREK TYAX EXPERT, GREY/YELLOW;"100";"100,30";"A";"2014 TREK"
"00041535";"MGKHTYE";2014 TREK TYAX EXPERT 29 , BLACK/RED;"100";"453,30";"A";"2014 TREK"
"00041531";"MGKHTYSP";2014 OPS TYAX SPORT, WHITE/GREY;"100,90";"306,60";"A";"2014 OPS"
"00046024";"MGKFAR";2015 OPS ARGUS, DARK TEAL;"899,90";"100,90";"A";"2015 OPS"
"00046088";"MGKHFB";2015 TREK FIREBALL 24 , BLACK;"100,90";"239,90";"A";"2015 TREK"
"00046026";"MGKHFB";2015 OPS FIREBALL 26 , BLUE;"100,90";"359,90";"A";"2015 OPS"
解释:
BEGIN{FS=OFS=";"}
将输入和输出字段分隔符设置为;
NR==1
仅针对记录 #1 执行此 block{print $0,"\"Category\"";next}
打印记录和文字文本"Category"
split($3, a, "")
用空格分割字段 #3 并用单个单词填充数组a
printf
通过从数组a
中取出 2 个第一个单词来打印格式化输出
关于linux - 将特定列添加到 CSV 文件的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27716323/