用awk编辑头文件

时间:2013-06-04 10:42:18

标签: header awk

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

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}

1 个答案:

答案 0 :(得分: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

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