Bash 如何在awk命令中使用存储在变量中的数字
我试图让脚本从文件中随机抓取一条记录。该文件共有10条记录。 我不知道为什么我现在拥有的东西不起作用。 (我有``关于n等于什么)Bash 如何在awk命令中使用存储在变量中的数字,bash,awk,Bash,Awk,我试图让脚本从文件中随机抓取一条记录。该文件共有10条记录。 我不知道为什么我现在拥有的东西不起作用。 (我有``关于n等于什么) 如果我用$n替换任何数字1-10,则没有问题。这应该按照您想要的方式工作: awk 'BEGIN{RS = "%"} NR=="'"$n"'"' /folder/file 请注意,与代码的唯一区别是变量周围有额外的“”“”。这应该按照您想要的方式工作: awk 'BEGIN{RS = "%"} NR=="'"$n"'"' /folder/file 请注意,与代码
如果我用
$n
替换任何数字1-10
,则没有问题。这应该按照您想要的方式工作:
awk 'BEGIN{RS = "%"} NR=="'"$n"'"' /folder/file
请注意,与代码的唯一区别是变量周围有额外的
“”“”
。这应该按照您想要的方式工作:
awk 'BEGIN{RS = "%"} NR=="'"$n"'"' /folder/file
请注意,与代码的唯一区别是变量周围额外的
“”“”
。您可以在awk
中生成随机数,以避免引用挑战:
awk -v min=1 -v max=10 'BEGIN{srand()
n=int(min+rand()*(max-min+1))
}
#... the rest of the awk ...'
如果要打印随机记录,请执行以下操作:
awk -v min=1 -v max=10 'BEGIN{srand()
n=int(min+rand()*(max-min+1))
}
NR==n {print; exit}' file
或者,您可以在awk
命令行上生成并分配:
$ awk -v n=$(expr $RANDOM % 10 + 1) 'BEGIN{ print n }'
或者
您可以在
awk
中生成随机数,以避免引用挑战:
awk -v min=1 -v max=10 'BEGIN{srand()
n=int(min+rand()*(max-min+1))
}
#... the rest of the awk ...'
如果要打印随机记录,请执行以下操作:
awk -v min=1 -v max=10 'BEGIN{srand()
n=int(min+rand()*(max-min+1))
}
NR==n {print; exit}' file
或者,您可以在awk
命令行上生成并分配:
$ awk -v n=$(expr $RANDOM % 10 + 1) 'BEGIN{ print n }'
或者
使用n=$(随机%10+1))
expr
对于POSIX中的算术来说大部分都是过时的。使用n=$(随机%10+1))
expr
对于POSIX中的算术来说大部分都是过时的。