我想在文件的指定行号处打印文本。
这是我的bash脚本
line=12
sed -n "$line{p;q;}"
我的行号是变量。但上面的代码不起作用。我该怎么办?
答案 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
或者使用head
和tail
但可能效率不高:
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