如何使用sed搜索文件的内容

时间:2014-01-27 19:32:23

标签: shell command-line sed gnu

我尝试了几个命令并阅读了一些教程,但都没有帮助。我正在使用gnu sed 4.2.2。 我只想在文件中搜索:

func1(int a)
{

我不知道是否是新行后跟“{”的事实,但它不起作用。 正确的命令会有所帮助,甚至更多的解释。谢谢!

注意:在“int a)之后”我输入了enter,但我认为stackoverflow没有输入换行符。我不想混淆,我只想搜索func1(int a)'newline'{。

1 个答案:

答案 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{'

但请注意,感谢-zgrep的输入将是一个包含换行符的大“行”(除非输入包含空字符)。在这种情况下,括号必须被转义,因为它是Perl正则表达式(-P)。 -o使grep打印出匹配的模式。