4つの列と300行のテキストファイルがあります。 100番目の行が1 * 0.02、2 * 0.02 ...の積になり、100番目の行が2.2、2.4 ...になる5番目の列を追加したいと思います。
0.02
0.04
.
.
.
2 (in 100 lines)
2.2
2.4
.
.
.
12 (in 300 lines)
私のテキストファイル:
# "Frame" "Timestep" "WignerSeitz.interstitial_count" "WignerSeitz.vacancy_count"
0 0 0 0
1 100 0 0
2 200 0 0
3 300 0 0
.
.
98 9800 16 16
99 9900 16 16
100 10000 15 15
.
.
299 29900 48 48
300 30000 55 55
予想出力:
# "Frame" "Timestep" "WignerSeitz.interstitial_count" "WignerSeitz.vacancy_count"
0 0 0 0 0
1 100 0 0 0.02
2 200 0 0 0.04
3 300 0 0 0.06
.
.
98 9800 16 16 1.96
99 9900 16 16 1.98
100 10000 15 15 2
.
.
299 29900 48 48 11.8
300 30000 55 55 12
ベストアンサー1
100以降を意味すると仮定すると、それ以降のすべてのレコードに0.2を追加する必要があります。これにより、awk
次のコードを実行できます。
awk -v x=2 '{if($1<101){print $0 FS ($1*0.02)}else{x=x+0.2; print $0 FS x}}' file.txt
どこ:
-v
初期値を持つ変数を使用してawk
いることを知らせるために使用されます。x
2
$1<101
最初の列が次より小さい場合、コードの最初の部分が機能するようにすることができます。101
FS
awk
ファイルのフィールド区切り文字を含む静的変数。
その後、要件に応じてステップを調整できます。