以指定的行号bash打印文本

时间:2014-04-28 16:53:37

标签: bash

我想在文件的指定行号处打印文本。

这是我的bash脚本

line=12
sed -n "$line{p;q;}"

我的行号是变量。但上面的代码不起作用。我该怎么办?

3 个答案:

答案 0 :(得分:1)

使用sed

line=12
sed -n "${line}p" my_file

# Multiple lines
line1=10
line2=15
sed -n "${line1},${line2}p" my_file

awk

awk "NR==${line}" my_file

# Multiple lines
awk "NR >= ${line1} && NR <= ${line2}" my_file

或者使用headtail但可能效率不高:

head -${line} my_file | tail -1

# Multiple lines    
head -${line2} my_file | tail -$(($line2-$line1+1))

答案 1 :(得分:1)

您必须将文件名作为参数提供给sed

line=12
sed -n "$line{p;q;}" filename

如果要将文件名作为参数传递给bash脚本,则需要使用:

line=12
sed -n "$line{p;q;}" "$1"

答案 2 :(得分:0)

快速sed命令(对较大的文件很有用)是:

n=12; sed $n'q;d' file