Linux 如何在shell中添加序列号
我想在下面的打印语句中添加序列号Linux 如何在shell中添加序列号,linux,shell,printf,Linux,Shell,Printf,我想在下面的打印语句中添加序列号 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
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
假设您指的是行号-NR指的是awk中的当前行号;然而,虽然awk经常从shell中使用,但它是自己的独立编程语言,具有自己的语法 维护一个显式计数器是典型的做法,如下所示:
NR在awk中有意义,而不是bash。他们是两种完全不同的语言,我明白了。请你在我的打印报表中提出建议。非常感谢,我也没想到$mean{I}会像预期的那样工作。有关间接变量用法(包括查找)的完整讨论,请参阅。哦!!有一个输入错误$mean${i}连接了两个值-名为$mean${i}的变量的值和$i的变量的值;即使i=1,它也不会取消对$mean_1的引用。
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