如何插入列插入使用CSV文件AWK

问题描述 投票:2回答:3

我想用SED一些列添加到默认值以下csv文件。

我的文件是这样的:

40,2012-05-30,London,61,Sunny
41,2012-02-22,Moscow,11,Snow
54,2012-04-10,Tokyo,02,Sunny

我想输出是:

40,2012-05-30,NULL,London,NULL,NULL,61,Sunny,Tom
41,2012-02-22,NULL,Moscow,NULL,NULL,11,Sunny,Tom
54,2012-04-10,NULL,Tokyo,NULL,NULL,02,Sunny,Tom

什么是最好的awk或者sed命令来获取所需的输出?

csv sed awk
3个回答
12
投票
$ awk '{print $1,F,$2,F,F,$3,$4,$5,"Tom"}' FS=, OFS=, F='NULL' file
40,NULL,2012-05-30,NULL,NULL,London,61,Sunny,Tom
41,NULL,2012-02-22,NULL,NULL,Moscow,11,Snow,Tom
54,NULL,2012-04-10,NULL,NULL,Tokyo,02,Sunny,Tom

1
投票

这是一系列基于这里的例子sed命令:

s/31,/31,NULL,/;
s/,01/NULL,NULL,01/;
s/.$/,Tom/

至于awk,也许你可以先插入域,后来更新它们:

BEGIN { FS="," }
{ print $1","$2",NULL,"$3",NULL,NULL,"$4","$5",Tom" }

0
投票

如果你只是添加字段,你表现出那么这样的事情是好的:

$ awk 'BEGIN{FS=OFS=","} {$3="NULL,"$3",NULL,NULL"; $0=$0",Tom"} 1' file
40,2012-05-30,NULL,London,NULL,NULL,61,Sunny,Tom
41,2012-02-22,NULL,Moscow,NULL,NULL,11,Snow,Tom
54,2012-04-10,NULL,Tokyo,NULL,NULL,02,Sunny,Tom

但如果你正在做更重要的是那么有可能是针对涉及换挡领域更好的解决方案,并通过循环的结果与填充“NULL”空字段。

© www.soinside.com 2019 - 2024. All rights reserved.