Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何在shell中添加序列号_Linux_Shell_Printf - Fatal编程技术网

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