【发布时间】:2020-07-25 03:38:11
【问题描述】:
我的文件是:
abc
123
xyz
abc
675
xyz
我想提取:
abc
123
xyz
(123可以是任何东西,关键是我想要第一次出现)
我试过用这个:
sed -n '/abc/,/xyz/p' filename
但这给了我所有的实例。我怎么能得到第一个?
【问题讨论】:
-
不要使用范围表达式 (
/start/,/end/),因为它们只会使琐碎的任务比使用标志稍微简单一些,然后当您的需求发生轻微变化时需要完全重写或复制条件。只需使用一个标志(这意味着您不能使用 sed - 哦,好吧)表明您何时处于由您的第一个条件为真开始的块中。 -
如果在匹配
abc的行之后没有匹配xyz的行,那么预期的输出是什么? -
如果
abc在第一个xyz之前出现两次,预期的输出是什么? -
有趣的问题。我应该自己提到它。 1、在xyz之前没有出现abc两次的可能性。一个 maven 检查样式插件确保 2. 如果没有匹配的行,则“预期”没有输出,只要它是确定的,我会用我得到的任何东西。