2016-12-23 1 views
0

私はbashで一連の数値を作成しようとしています。私は、非常に長いシーケンスでは、awkに書き込まれたループを使用することが、従来のループよりもはるかに高速で時間効率が良いことを発見しました。例えば、5つのサンプルがあり、0から始まるタイムシーケンスを各サンプル間で0.5秒、awkと私は書く:AWKでループを実行しますが、定義済みの変数を使用しています

awk 'BEGIN {time=0; print time; for (i=1; i<5; ++i) {time += 0.5; print time}}' 

そして、それは動作します...さて、私はどこ一部、数回のシーケンスの生成を自動化するスクリプト内でこのコマンドを使用しようとしています彼らは異なる数のポイントと異なる増分を持っています。そこで、私は以前に各データセットの特性に基づいて作成されたいくつかの変数を定義してから、awkの内部でそれらを使用する必要があります。このようなもの(前の例に適用):

start=1 
end=5 
increment=0.5 
awk 'BEGIN {time=0; print time; for (i=$start; i<$end; ++i) {time += $increment; print time}}' 

しかし、それは動作しません...明らかに、それは構文の問題です。私はこれを書く正しい方法を知らない。私は何か提案をいただければ幸いです。

+0

'bash'変数と' awk'変数が異なっているとして、変数の値を採用することができます。 – Inian

答えて

1

構文を使用して、の変数を追加します。この例では、同じ名前の変数bashをインポートした構文を使用しています。

awk -v start="$start" -v end="$end" -v increment="$increment" 'BEGIN {time=0; print time; for (i=start; i<end; ++i) {time += increment; print time}}' 
0 
0.5 
1 
1.5 
2 

また、直接

awk -v start=1 -v end=5 -v increment=0.5 'BEGIN {time=0; print time; for (i=start; i<end; ++i) {time += increment; print time}}' 
0 
0.5 
1 
1.5 
2 
関連する問題