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

时间:2015-08-31 21:11:21

标签: bash awk tabular

我有一组表格数据,为了便于阅读,我们使用一个,两个,三个或四个制表符空间进行了调整。现在我想将其导出为CSV文件。 所以,如果我是对的,我需要将所有单个或多个制表符空间转换为单个逗号。我试过一个伎俩,下面无济于事!

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

3 个答案:

答案 0 :(得分:2)

你很亲密。

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

应该有用。

/\t+/将匹配一个或多个标签。

答案 1 :(得分:2)

您只需要:

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

答案 2 :(得分:1)

使用awk你可以做几乎所有事情,但正确的工具是tr

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

-s选项适用于重复重复