如何在shell中添加序列号

时间:2017-01-13 05:02:24

标签: linux shell printf

我想在下面的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

1 个答案:

答案 0 :(得分:1)

假设您的意思是“行号” - NR是指awk中的当前行号;然而,虽然awk经常在shell中使用,但它是它自己的独立编程语言,有自己的语法。

维护明确的计数器是典型的做法,如下面的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