我有一个 *.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