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 に答える