将多个制表符空格替换成,表格文本数据替换成 CSV

Replace multiple tab spaces into, tabular text data into CSV

我有一组表格数据,为了便于阅读,已经用一个、两个、三个或四个制表符空格进行了调整。现在我想将它导出到 CSV 文件。 所以如果我是对的,我需要将所有单个或多个选项卡 space/s 转换为单个逗号。我试过类似以下的技巧,但无济于事!

awk 'NR>1{gsub("\t\t\t\t",",")}1' < test.data  > awk.xls
awk 'NR>1{gsub("\t\t\t",",")}1' < awk.xls  > awk.xls
awk 'NR>1{gsub("\t\t",",")}1'< awk.xls  > awk.xls
awk 'NR>1{gsub("\t",",")}1'< awk.xls  > awk.xls

我该怎么做?

数据一瞥

C(SiH3)2        triplet     DFT         TO          2.013503    -620.379515709604   3-1/C-SiH3-2/C-SiH3-2-t.out
CF2             singlet     CC          TO          0.000000    -237.419131945340   3-1/CF2/CF2-CC-s.out
CF2             singlet     DFT         TO          -0.000000   -237.686609290184   3-1/CF2/CF2-s.out
CF2             triplet     DFT         TO          2.005408    -237.601091999318   3-1/CF2/CF2-t.out

你很接近。

awk 'NR > 1 {gsub(/\t+/, ",")} 1' awk.xls > temp_awk.xls
mv temp_awk.xls awk.xls

应该可以。

/\t+/ 将匹配一个或多个选项卡。

有了 awk,您几乎可以做所有事情,但处理此问题的正确工具是 tr

sed 1d | tr -s '\t' ','

-s 选项用于压缩重复

您只需要:

awk -F'\t+' -v OFS=',' '{=}1' file