4

我正在尝试打印出使用行号确定的文件的特定部分,但是行号每天都会有所不同,因此我需要能够获取行号,将它们存储为变量,然后使用 sed从存储的文件中剪切行。

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

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

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

sed -n '$FL,$LFp' start-loader

其中变量是我存储的行号。

从对此事的大量研究中,我知道上述语法不正确,但是我使用的所有内容要么返回错误,要么不起作用。我已经尝试过双引号,变量的单引号,双引号,变量的大括号以及其他一些东西以及许多不同的语法样式。有人会碰巧知道我该如何正确地做到这一点吗?

4

2 回答 2

6

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

$ sed -n "$FL,${LF}p" start-loader
$ sed -n "$FL,$LF p" start-loader

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

您还需要使用双引号,而不是单引号,以允许在sed看到变量之前对其进行扩展。

于 2013-05-01T21:20:06.813 回答
3

我希望下面的例子回答了你的问题:

kent$  s=3
kent$  e=8
kent$  seq 20 |sed -n "$s,$e p"
3
4
5
6
7
8
于 2013-05-01T21:19:36.193 回答