2013-07-28 20 views
0

所以我一直試圖在過去的幾天同樣的問題,我在一個格式化路障。的Unix /殼牌添加部分列到文件

我有一個程序,只會在平等的列數,如果它的工作運行。我知道總列數,並在需要的數量爲0的填充值增加,但我不知道如何做到這一點。有沒有一些與awk或sed的範圍選項的時間?

輸入:

A B C D E 
A B C D E 1 1 1 1 

輸出:

A B C D E 0 0 0 0 
A B C D E 1 1 1 1 

的字母列是始終存在(不同的值),但這種 「填空」 功能躲避我。由於數據文件的大小,我無法使用R。使用awk

回答

0

方式一:

$ awk 'NF!=n{for(i=NF+1;i<=n;i++)$i=0}1' n=9 file 
A B C D E 0 0 0 0 
A B C D E 1 1 1 1 

只需設置n到要墊高達列數。

+0

這似乎是有效的。我對此的解釋是... 如果當前行中的字段數不等於最大列數,請執行:對於小於最大列數的每個NF + 1,將下一個未定義的列設置爲等於0在年底的功能,打印(1 =打印AWK成語?某種真實價值?) – ashah57

+0

對不起!我當然會。我正在閱讀並試圖理解你的一行。 – ashah57

+0

@ ashah57是的,你在你的理解中是正確的,看起來你在我寫了第一篇之後給你的評論增加了更多內容。 –