複数のシーケンスを掛けてテキストファイルに新しい列を追加するには?

複数のシーケンスを掛けてテキストファイルに新しい列を追加するには?

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いることを知らせるために使用されます。x2

$1<101最初の列が次より小さい場合、コードの最初の部分が機能するようにすることができます。101

FSawkファイルのフィールド区切り文字を含む静的変数。

その後、要件に応じてステップを調整できます。

おすすめ記事