2012-03-08 10 views
0

私はちょうどこれで忙しい時間を過ごしています。kshとawk/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つ以上の列を持つ行は印刷されません。

どのような考えですか?

答えて

1

テストされていないが、これを試してみてください。コメントを

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

アップデートを - 私はあなたが引用符内のすべてのフィールドしたいと仮定します。私はあなたのための変数としてのnawkに単一引用符を渡す

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 

を単一引用符で囲まれた文字列に単一引用符を埋め込むことはできません。

+0

これは動作するようです。一重引用符で各データ要素を囲みたい場合はどうすればよいですか? – Carlos

+1

@ mastashake57、回答が更新されました。 –

関連する問題