2010-11-19 30 views
2

遞減一列中的值我有一列一組值去AWK:如何通過一個

3 
4 
4 
5 
6 
7 
8 
... 

我希望通過1

任何想法遞減所有這些值如何在AWK腳本中制定這個?

感謝


如果我想遞增條目,而不是遞減?

awk'{$ 7--;打印$ 1}'工作?

回答

6

如果它只是一列,這會做:

awk '{ $7--; print $0 }' 

而不是在「$ 7」你需要插入您的列數「7」;如果該數字大於10,則將其寫爲$(77),例如,

如果行的所有列都受到影響,使用這個:

awk '{ for (f=1; f<=NF; f--) $f-- 
     print $0 
     }' 

希望這有助於

克勞斯

+0

對不起,該文件相當大。我會再試一次解釋:其中一列有條目3 4 5 6 7 8 9 ....直到2012年我想減少這些,所以列說2 3 4 5 ....直到2011年的任何幫助嗎? – christian 2010-11-19 15:34:41

+0

@christian建議的解決方案(此答案中的第一個灰色代碼)完全符合您的要求。只要確保用您的列號替換$ 7 – 2010-11-19 15:39:27

+0

令人難以置信!謝謝 – christian 2010-11-19 15:43:42

0

如果他們在第4欄,$4--,然後做什麼否則你打算去做(例如打印)。

+0

好的,謝謝!但是這個腳本是否將數字減1? – christian 2010-11-19 15:38:38

+0

這不是一個完整的腳本,但是這是腳本的一部分,它會將第四列中的數字減1。 – Cascabel 2010-11-19 15:41:29