0

私はこれで最悪の時間を過ごしています。これが私のnawkステートメントです:

nawk -F"\t" '{print substr($1,0,4)","substr($1,5,4)","substr($1,9,4)","$2","$3","$4","$5","$6}' filename

一言で言えば、これはタブ区切りファイルです。最初の列(12文字)を3列に分割したいのですが、これは部分文字列関数を使用して行います。次に、最初の列なしで残りのデータを印刷したいと思います。私が問題を抱えているのは追加部分です。

現在の反復では、6列を持たない行にはコンマがぶら下がっていて、6列を超える行は印刷されません。

何かご意見は?

4

1 に答える 1

1

テストされていませんが、これを試してください:

nawk -F"\t" -v OFS=, '
    {$1 = substr($1,0,4) OFS substr($1,5,4) OFS substr($1,9,4)}
    {print}
' filename

コメントの更新 - すべてのフィールドを引用符で囲みたいと思います:

nawk -F"\t" -v OFS=, -v q="'" '
  {
    $1 = q substr($1,0,4) q OFS q substr($1,5,4) q OFS q substr($1,9,4) q
    for (i=2; i<=NF; i++) 
      $i = q $i q
    print
  }
' filename

一重引用符を一重引用符で囲まれた文字列に埋め込むことはできないため、一重引用符を変数として nawk に渡します。

于 2012-03-08T22:32:15.257 に答える