如何使用awk单引号在第一个位置插入新行

时间:2016-03-13 00:09:53

标签: awk

我对awk的知识非常有限 我得到了大型csv文件(500.000行),其格式如下:

'0000011197118123','136',,'35993706', '33745', '22052', 'appsflyer.com'  
'0000011194967123','136',,'35282806', '74518', '30317', 'crashlytics.com'  
'0000011199022123’,’139',,'01363100', '8776250', '373671', 'whatsapp.com'  
............  

我需要从第一列中删除前8位并添加日期字段,作为新的第一列(日期应该是第1天的日期),如下所示:

'2016/03/12','97118123','136',,'35993706','33745','22052','appsflyer.com'  
'2016/03/12','94967123','136',,'35282806','74518','30317','crashlytics.com'  
'2016/03/12','99022123’,’139',,'01363100','8776250','373671','whatsapp.com'  

非常感谢你的时间。 M.Tave

2 个答案:

答案 0 :(得分:1)

你可以做类似的事情:

awk -F, -v date="2016/03/12" 'BEGIN{OFS=FS}
             {sub(/^.{8}/, "'\''", $1)
             s="'\''"date"'\''"
             $1=s OFS $1
             print }' csv_file

我不明白你如何确定你的日期,所以我只是用了一个字符串。

根据评论,你可以这样做:

awk -v d="2016/03/12" 'sub(/^.{8}/,"'\''"d"'\'','\''")' csv_file

答案 1 :(得分:0)

$ awk -v d='2016/03/12' '{print "\047" d "\047,\047" substr($0,10)}' file
'2016/03/12','97118123','136',,'35993706', '33745', '22052', 'appsflyer.com'
'2016/03/12','94967123','136',,'35282806', '74518', '30317', 'crashlytics.com'
'2016/03/12','99022123’,’139',,'01363100', '8776250', '373671', 'whatsapp.com'