2017-06-16 44 views
0

添加字符的专栏中,我需要添加角色“在一列在文件中。在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列,我要补充”,例如...“星期五”

我该怎么做?

谢谢

+0

当前行是否要修改同一个文件,或者你想创建一个不同的文件? –

+0

这是一个需求转储,并显示你绝对没有努力。这不是如何工作。 –

+0

@MadPhysicist我认为这是完全合理的。他们已经获得了样本数据,期望的结果以及对转化的可理解的解释。它可以用简短的答案回答,并且没有模糊的事情发生。我不喜欢的唯一的事情是它显示的研究工作很少,因为这可能在命令行上以10种不同的方式完成。 – JNevill

回答

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
2
awk 'BEGIN{FS=OFS=","}{$4="\""$4"\"";$9="\""$9"\"";$10="\""$10"\"";}1' file 

字段分隔符和输出字段分隔围绕双引号是逗号。 在awk,因为1永远是真实的,它执行默认操作{print $0},因此打印存储在$0

+0

尽管此代码可能会回答问题,但提供有关如何解决问题和/或为何解决问题的其他上下文可以提高答案的长期价值。 – Badacadabra

+0

是的。我编辑过。 – tso

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