如何使用sed从文件中打印行,其中行号存储为变量

byt*_*hoy 4 variables bash sed

我正在尝试打印出我使用行号确定的文件的特定部分,但行号会每天变化,所以我需要能够获取行号,将它们存储为变量,然后使用sed从存储的文件中剪切线条.

这是我到目前为止所拥有的:

start-loader是一个包含我想要打印的行的文件,但也包含很多垃圾.

我可以sed -n '93,109p' start-loader用来打印出我需要的东西,但我想要做的是:

sed -n '$FL,$LFp' start-loader
Run Code Online (Sandbox Code Playgroud)

变量是我存储的行号.

我知道以上不是正确的语法,从很多关于这个问题的研究,但我使用的一切都返回错误或不起作用.我已经尝试过双引号,单个然后双重变量,大括号变量,以及其他一些东西以及许多不同的语法样式.谁会碰巧知道我怎么能正确地做到这一点?

che*_*ner 6

您需要以p某种方式将命令与上一行变量分开.以下任何一种都应该有效:

$ sed -n "$FL,${LF}p" start-loader
$ sed -n "$FL,$LF p" start-loader
Run Code Online (Sandbox Code Playgroud)

如果没有分离,shell将尝试扩展LFp不存在的变量,从而导致传递空字符串sed并导致语法错误.

您还需要使用双引号而不是单引号来允许变量在sed看到它们之前进行扩展.