2016-04-13 4 views
0

私は、例えばASCIIデータファイルを持っている:awkを使用して列のいくつかの行を編集するには?

ifile.txt 
2 
3 
2 
3 
4 
5 
6 
4 

私は第六行の後にすべての数字に3を掛けたいと思います。だから、OUTFILEは次のようになります。

ofile.txt 
2 
3 
2 
3 
4 
15 
18 
12 

私のアルゴリズム/スクリプトは

awk '{if ($1<line 6); printf "%10.5f\n", $1}' ifile.txt > ofile.txt 
awk '{if ($1>=line 6); printf "%10.5f\n", $1*3}' ifile.txt >> ofile.txt 

答えて

2

これを実行する最も簡単な方法であることである:

awk 'NR > 6 { $1 *= 3 } 1' ifile.txt 

乗算最初のフィールド3のレコード(行で)番号NRが6より大きい。

awkプログラムの構造はcondition { action }の場合、デフォルトの条件は,で、デフォルトの動作は{ print }であるため、末尾の1は常にすべての行を印刷する最短の方法です。

+0

@Kayanうまくいけば、私の説明の段落は 'printf'を使ったブロックで' 1'を置き換えることを明らかにしています。必要な出力から、書式設定が必要であることは明らかではありませんでした。 –

関連する問題