統計を計算するプログラムは、データをこの形式で出力します。
Calc_Statistics -input_data
zone|label|non_null_cells|null_cells|min|max|range|mean|mean_of_abs|stddev|variance|coeff_var|sum|sum_abs
1|Category 1|2340|6|0.281038027256727|0.462105994578451|0.181067967321724|0.408569300865444|0.408569300865444|0.0272405706818114|0.000742048691070761|6.66730726564858|956.0521640251|956.0521640251
2|Category 2|1504|11|0.231816699029878|0.428150941850618|0.19633424282074|0.368851480689277|0.368851480689277|0.0237446334053689|0.000563807615555358|6.43745101985139|554.7526269567|554.7526269567
...
...
n
切り取り、私が望む値を選択する方法を知っています。
calc_statistics -input_data | cut -f1,2,34 -d'|'
私は次のようなものを得るでしょう:
zone|label|non_null_cells|null_cells
1|Category 1|2340|6
2|Category 2|1504|11
次のような入力コレクションを取得するために実行したいと思います。
for year in years:
do
for month in months:
do
calc_statistics -input_data $year$month_data | cut -f1,2,34 -d'|' >> results.txt
done
done
しかし、結果が次のように各行に$ year変数と$ month変数を追加するにはどうすればよいですか?
2000|2|1|Category 1|2340|6
2000|2|2|Category 2|1504|11
答え1
別途印刷してください。末尾の改行文字をスキップするecho
オプション()だけで-n
十分です。
for year in years:
do
for month in months:
do
echo -n "$year|$month|"
calc_statistics | cut -f1,2,34 -d'|' >> results.txt
done
done
または、それを転送しcalc_statistics
て印刷するようにします(その後、cut
適切に呼び出しを調整します)。あなたの例$month
は$year
まったく使われていないので少し奇妙です。
編集:ああ、この場合はできますが、paste
テキスト編集アプリケーションを使用する方がはるかに簡単です。私sed
:
for year in years:
do
for month in months:
do
calc_statistics | cut -f1,2,34 -d'|' | sed "2,$ s/^/$year|$month|/" >> results.txt
done
done
これは、2,$
最初の行(行の範囲を表す)の後のすべての行を読み、^
行の先頭()を希望の値に置き換えることです。文字列を結果ファイルに保存する前に、これをすべて行います。