从逗号转换为列 (sed)

从逗号转换为列 (sed)

我有一个 *.csv 文件,其中包含以下格式的一些文本:

a, b, c 
d, e, f
g, h, i

我想将其转换为包含三列的 *.xls 文件。可以用“sed”来做吗?

编辑:这只是一个例子。我感兴趣的是用列移位替换符号(如果这不是不可能的话)。接下来,我想要操作如下所示的文本:

单列

a[kg/m] 

为两列格式

a     [kg/m]

但我不确定这是否可能!但我知道“sed”可以做很多技巧来替换和修改 *.csv 文件

答案1

我不知道是否正确理解您请求的第二部分:

单列a[kg/m]到两列格式a [kg/m]

但这会将您的 csv 转换为制表符分隔的文件,并在 [Kg/m] 之前添加额外的列:

sed -e 's/,/\t/g' -e 's:\(\[Kg/m\]\):\t\1:g' afile.csv > newfile.csv

例子:

$ cat afile.csv
a[Kg/m],b[Kg/m],c
d[Kg/m],e[Kg/m],f
g[Kg/m],h[Kg/m],i

$ sed -e 's/,/\t/g' -e 's=\(\[Kg/m\]\)=\t\1=g' afile.csv > newfile.csv

$ cat newfile.csv
a       [Kg/m]  b       [Kg/m]  c
d       [Kg/m]  e       [Kg/m]  f
g       [Kg/m]  h       [Kg/m]  i

这个 sed 命令中有两个脚本:

  • -e 's/,/\t/g'替换','<tab>
  • -e 's=\(\[Kg/m\]\)=\t\1=g'[Kg/m]替换任何<tab>[Kg/m]

现在,无需替换为选项卡,您可以使用以下命令向 csv 文件添加额外的列:

$ sed -e 's=\(\[Kg/m\]\)=,\1=g' afile.csv > newfile.csv
$ cat newfile.csv
a,[Kg/m],b,[Kg/m],c
d,[Kg/m],e,[Kg/m],f
g,[Kg/m],h,[Kg/m],i

相关内容