2010-11-19 6 views
2

で列の値をデクリメントする方法私は、私がどのようにのように1AWK:1

によって任意のアイデアを、すべてのこれらの値をデクリメントしたい

3 
4 
4 
5 
6 
7 
8 
... 

を行く列の値のセットを持っていますこれをAWKスクリプトで作成するには?私が代わりにデクリメントのエントリをインクリメントしたい場合はどう

おかげ


awk '{$ 7--; print $ 1} 'の仕事はありますか?それだけで単一の列はなら

答えて

6

、これは行います:代わりに「$ 7」あなたは列番号を挿入する必要がで「7」の

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

を。この数字が10より大きい場合は、$(77)と書いてください。

行のすべての列が影響を受けている場合は、これを使用する:

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

希望これは、彼らが4欄、$4--にいる場合は、

クラウス

+0

申し訳ありませんが、文書はかなり大きいです。私は再び説明をしよう:列の1つにエントリがあります3 4 5 6 7 8 9 .... 2012年までこれらを減らしたいので、列に2 3 4 5 .... – christian

+0

@christian提案されている解決策(この回答の最初のグレーコード)は、あなたが望むものとまったく同じです。 $ 7をカラム番号 –

+0

で置き換えてください。おかげで – christian

0

を助け、その後、何でもそうでなければあなたはやるつもりでした(例えば、印刷)。

+0

、ありがとう!このスクリプトは数字を1減らしますか? – christian

+0

これは完全なスクリプトではありませんが、これは4番目の列の数字を1減らすスクリプトの一部です。 – Cascabel