2012-03-08 70 views
0

我只是在這方面有最沉默的時間。這裏是我的nawk聲明:分割和追加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 -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,因爲你需要一個變量不能將單引號嵌入單引號字符串中。

+0

這似乎工作。如果我想用單引號包裝每個數據元素會怎麼樣? – Carlos 2012-03-08 23:22:33

+1

@ mastashake57,回答已更新。 – 2012-03-09 14:01:17