在bash中的列中添加一个字符

时间:2017-06-16 13:14:50

标签: bash

我需要添加角色"在文件内的一列中。

London,20170616,16,Fri,0,21.5,11.0,3466,16.120,3.71,0,37,11
London,20170617,17,Sat,0,20.8,10.8,3998,342.55,6.89,0,0,0
London,20170618,18,Sun,0,20.1,7.5,3853,335.29,4.62,0,0,0
London,20170619,19,Mon,0,19.4,4.1,3525,255.07,0.49,0,3,0
London,20170620,20,Tue,0.1,22.4,8.7,3632,327.02,1.91,0,0,0
London,20170621,21,Wed,0.3,21.5,11.3,3594,322.33,4.20,0,3,3.2

在第4,第9和第10栏,我必须添加",例如......" Fri"

我该怎么做?

谢谢

3 个答案:

答案 0 :(得分:4)

您可以使用awk:

awk 'BEGIN{FS=OFS=","}{print $1,$2,$3,"\""$4"\"",$5,$6,$7,$8,"\""$9"\"","\""$10"\"",$11,$12,$13}' yourfile > outfile

此处awk是:

  1. 在处理文件(FS)之前将字段分隔符OFS和输出字段分隔符BEGIN{FS=OFS=","}设置为逗号
  2. 打印出每个列/字段并在指定列周围粘贴双引号(print $1,$2,$3,"\""$4"\"",$5,$6,$7,$8,"\""$9"\"","\""$10"\"",$11,$12,$13

答案 1 :(得分:2)

awk 'BEGIN{FS=OFS=","}{$4="\""$4"\"";$9="\""$9"\"";$10="\""$10"\"";}1' file

字段分隔符和输出字段分隔符是逗号。 在awk中,因为1始终为真,所以它执行默认操作{print $0},因此打印存储在$0

中的当前行

答案 2 :(得分:0)

awk -v q=\" 'BEGIN{FS=OFS=","}{$4=q$4q;$9=q$9q;$10=q$10q}1' file

London,20170616,16,"Fri",0,21.5,11.0,3466,"16.120","3.71",0,37,11
London,20170617,17,"Sat",0,20.8,10.8,3998,"342.55","6.89",0,0,0
London,20170618,18,"Sun",0,20.1,7.5,3853,"335.29","4.62",0,0,0
London,20170619,19,"Mon",0,19.4,4.1,3525,"255.07","0.49",0,3,0
London,20170620,20,"Tue",0.1,22.4,8.7,3632,"327.02","1.91",0,0,0
London,20170621,21,"Wed",0.3,21.5,11.3,3594,"322.33","4.20",0,3,3.2