我尝试了几个命令并阅读了一些教程,但都没有帮助。我正在使用gnu sed 4.2.2。 我只想在文件中搜索:
func1(int a)
{
我不知道是否是新行后跟“{”的事实,但它不起作用。 正确的命令会有所帮助,甚至更多的解释。谢谢!
注意:在“int a)之后”我输入了enter,但我认为stackoverflow没有输入换行符。我不想混淆,我只想搜索func1(int a)'newline'{。
答案 0 :(得分:3)
sed -n '/func1/{N;/func1(int a)\n{/p}'
说明:
sed -n '/func1/{ # look for a line with "func1"
N # append the next line
/func1(int a)\n{/p # try to match the whole pattern "func1(int a)\n{"
# and print if matched
}'
使用grep,例如:
grep -Pzo 'func1\(int a\)\n{'
但请注意,感谢-z
,grep
的输入将是一个包含换行符的大“行”(除非输入包含空字符)。在这种情况下,括号必须被转义,因为它是Perl正则表达式(-P
)。 -o
使grep打印出匹配的模式。