2010-11-19 40 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