2012-06-14 73 views
1

我有一個由17列組成的文本文件(製表符分隔)。我想以這種方式改變這種結構。保存從1到6的列,直到文件的結尾,然後在7到16之間添加列(我可以刪除17),然後重複從1到5的每列,我補充說。這意味着我還需要添加一個具有相同數字的額外列,直到下一個添加的開始,以便跟蹤我追加的列並查看它開始的哪一行。shell腳本:重新排列列

希望這個已經夠清楚了。

感謝您的寶貴時間和支持。

原始

179 1 AA  19.50 30.00 1.0000 2.0000 3.0000 ... 
180 1 BB  19.75 30.00 4.0000 5.0000 6.0000 ... 
230 1 CC  32.25 30.00 7.0000 8.0000 9.0000 ... 

所需

179 1 1 AA  19.50  30.00 1.0000  
180 1 1 BB  19.75  30.00 4.0000  
230 1 1 CC  32.25  30.00 7.0000 
179 1 2 AA  19.50  30.00 2.0000 
180 1 2 BB  19.75  30.00 5.0000  
230 1 2 CC  32.25  30.00 8.0000 
179 1 3 AA  19.50  30.00 3.0000  
180 1 3 BB  19.75  30.00 6.0000  
230 1 3 CC  32.25  30.00 9.0000 
+0

也許你可以展示一些例子輸入和輸出? –

回答

1

這個怎麼樣的一個想法(用awk挑選出列數據,使用臨時輸出文件來保存數據):

rearrange.awk:

{ 
    for (i=6; i<=NF; ++i) { 
     print $1, $2, (i-5), $3, $4, $5, $i > "temp_output"i".txt" 
    } 
} 

那麼這將在腳本中使用:

awk -f rearrange.awk < input.txt 
cat temp_output*.txt > output.txt 
rm temp_output*.txt