有几个问题与此类似,但当我想在多行中搜索模式时,我还没有找到有效的解决方案。下列
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
。取自这里。