sed - 仅在某些预定义行上使用模式

sed - 仅在某些预定义行上使用模式

我想用它sed来给我文件中的一些行。我只想在我知道的文件的某些部分中提取这些行。例如,我有一个包含 100 行的文件,我正在寻找第 10 行和第 30 行内具有特定模式的行。

我当前的解决方案是使用两个sed命令:第一个命令打印我所拥有的行号之间的所有内容,例如

sed -n "10,30p" target_file.file

第二个使用模式搜索该结果

sed -n '/pattern/p'

所以最后我有这个:

sed -n "10,30p" target_file.file | sed -n '/pattern/p'

有没有办法从两个命令中生成一个命令?

答案1

你可以:

$ sed -n '10,30{
  /pattern/p
}' <file

这是目前的标准语法。您还可以使用:

$ sed -n '10,30{/pattern/p;}' <file

在下一个 POSIX 版本中。

相关内容