sed:仅打印第一次出现的模式匹配

sed:仅打印第一次出现的模式匹配

有几个问题与此类似,但当我想在多行中搜索模式时,我还没有找到有效的解决方案。下列

sed -n '/First string/,/Second string/ p' my.file

将打印全部匹配模式的出现次数,但我只想第一次出现。我正在使用 GNU sed。

答案1

用于q在到达结束模式时显式退出。

在 GNU sed 中:

$ cat foo
foo
START
bar
END
blah
START another

$ sed -n '/START/,/END/p; /END/q' foo
START
bar
END

awk也许会更容易不重复结束模式:

$ awk '/START/{p=1} p; /END/{exit}' foo
START
bar
END

答案2

如果这是您想要的第一次出现,也许awk更适合这个:awk 'NR==1,/original/{sub(/original/, "replacement")} 1' file。取自这里

相关内容