如何从bash中的变量中选择文件的第n行?

时间:2014-03-25 02:22:24

标签: bash sed environment-variables

可能重复:Bash tool to get nth line from a file

我需要选择第n行一个文件,这行定义为变量PBS_ARRAYID

另一个问题(上面的链接)中的接受解决方案是:

sed 'NUMq;d' job_params

我试图适应变量(实际上我尝试了很多东西,但是更有意义的那个):

sed "${PBS_ARRAYID}q;d" job_params

但是我收到以下错误:

sed: -e expression #1, char 2: invalid usage of line address 0

我做错了什么?

2 个答案:

答案 0 :(得分:0)

这是一个awk示例。

假设我们有这个文件:

cat file
1 one
2 two
3 three
4 four
5 five
6 six
7 seven
8 eight
9 nine

然后我们有变量:
var="four"
number=2

然后这个awk给出了:

awk '$0~v {f=NR} f && f+n==NR' v="$var" n="$number" file
6 six

答案 1 :(得分:0)

您的解决方案是正确的:

sed "${PBS_ARRAYID}q;d" job_params

唯一的问题是sed认为第一行是第1行(感谢rici),因此PBS_ARRAYID必须在[1,X]范围内,其中X是输入文件中的行数,或者:

wc -l job_params