2017-01-13 17 views
0

次のprintステートメントにシリアル番号を追加したいと思います。シェルにシリアル番号を追加する方法

for i in 1 5 20 50 100 200 500 1000;do 
#I have here some computations for each i, finally mean_${i}=xyz 
#for example 
mean_1=10.42 
mean_5=12.43 
mean_20=25.34 
mean_50=59.34 
mean_100=150.32 
mean_200=378.43 
mean_500=697.45 
mean_1000=1233.54 
printf "%5s %10s %10s\n" sl.No. "$i" "mean_${i}" >> ofile.txt 
done 

シリアル番号を追加できません。あなたは「行番号」を意味すると仮定すると、

所望の出力

ofile.txt 
1 1 10.42 
2 5 12.43 
3 20 25.34 
4 50 59.34 
5 100 150.32 
6 200 378.43 
7 500 697.45 
8 1000 1233.54 
+0

'NR'はawkのではなく、bashで意味があります。 (彼らは2つの全く異なる言語です)。 –

+0

私は参照してください。あなたは私のプリントステートメントでそれを行う方法をお勧めしますか?ありがとうございました – Kay

+0

ところで、私は '' $ mean_ {i} ''が期待どおりに動作するとは思っていませんでした。参照を含む間接変数の使用方法の詳細については、[BashFAQ#6](http://mywiki.wooledge.org/BashFAQ/006)を参照してください。 –

答えて

1

- NRawkで現在の行番号を参照します。 awkはシェルから頻繁に使用されますが、独自の構文を持つ独自の独立したプログラミング言語です。明示的なカウンタを維持

以下lnの場合のように、典型的な実践されています

mean_1=10.42 
mean_5=12.43 
mean_20=25.34 
mean_50=59.34 
mean_100=150.32 
mean_200=378.43 
mean_500=697.45 
mean_1000=1233.54 

ln=0 
for i in 1 5 20 50 100 200 500 100; do 
    meanvar=mean_$i 
    printf '%5s %10s %10s\n' "$((++ln))" "$i" "${!meanvar}" 
done 
関連する問題