特定の行の特定の列に異なる数字を掛ける方法は?

特定の行の特定の列に異なる数字を掛ける方法は?

2番目の列(5行)、(6〜8行)、(9〜10行)にそれぞれ5、4、3を掛けたいと思います。

次のコマンドを使用してのみ数字を掛けることができます

awk '{print $1, $2*5, $3,$4}' defect > out.txt

入力する:

# "Frame" "Timestep" "WignerSeitz.interstitial_count" "WignerSeitz.vacancy_count"
 1 100 1 1 
 2 200 1 1 
 3 300 1 1 
 4 400 1 1 
 5 500 1 1 
 6 600 1 1 
 7 700 2 2 
 8 800 2 2 
 9 900 2 2 
 10 1000 2 2

予想出力:

# "Frame" "Timestep" "WignerSeitz.interstitial_count" "WignerSeitz.vacancy_count"
 1 500 1 1 
 2 1000 1 1 
 3 1500 1 1 
 4 2000 1 1 
 5 2500 1 1 
 6 2400 1 1 
 7 2800 2 2 
 8 3200 2 2 
 9 2700 2 2 
 10 3000 2 2

ベストアンサー1

awkでNR=行番号変数を使用する必要があります。

awk 'NR<=5{$2=$2*5};NR>5 && NR<=8{$2=$2*4};NR>8 && NR<=10{$2=$2*3};1' file1
1 500 1 1
2 1000 1 1
3 1500 1 1
4 2000 1 1
5 2500 1 1
6 2400 1 1
7 2800 2 2
8 3200 2 2
9 2700 2 2
10 3000 2 2

おすすめ記事