我试图让脚本从文件中获取随机记录。该文件总共有10条记录。 不知道为什么我现在拥有的东西不起作用。 (我有一个“等于n”)。
n=expr $RANDOM % 10 + 1
awk 'BEGIN{RS = "%"} NR==$n' pathToFile
如果我用$n
替换任何数字1-10
,则没有问题。
答案 0 :(得分:2)
您可以在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 }'
或者,
$ echo $n
7
$ awk -v n="$n" 'BEGIN{ print n }'
7
答案 1 :(得分:0)
这应该按你想要的方式工作:
awk 'BEGIN{RS = "%"} NR=="'"$n"'"' /folder/file
请注意,与代码的唯一区别在于变量周围的额外"'" "'"
。