0

我有一个以空格分隔的文件,我需要将其转换为:

header=tab separated, 
records=" ; " separated (space-semicolon-space)

我现在正在做的是:

cat ${original} | awk 'END {FS=" "} { for(i=1; i<=NR; i++) {if (i==1) { OFS="\t"; print $0; } else { OFS=";" ;print $0; }}}' > ${new}

但只是部分工作,首先,它产生数百万行,而原始的大约有 90000 行。

二是表头,这里要修改:

if (i==1) { OFS="\t"; print $0; }

完全没有修改,

另一种选择是使用 sed,我可以部分完成该工作,但标题仍然保持不变:

cat ${original} | sed 's/\t/ ;/g' > ${new}
4

1 回答 1

1

此行应更改文件中的所有分隔符

 awk -F'\t' -v OFS=";" '$1=$1' file

这将使标题保持不变:

 awk -F'\t' -v OFS=";" 'NR>1{$1=$}1' file

只会更改标题行:

 awk -F'\t' -v OFS=";" 'NR==1{$1=$1}1' file

您可以粘贴一些示例,让我们知道您的标题未修改的原因。

于 2013-06-04T11:04:56.850 回答