使用sed打印匹配的正则表达式

时间:2014-03-10 17:43:05

标签: regex bash sed

所以我试图将regexp与其中间的任何字符串匹配,然后打印出该字符串。语法有点像......

sed -n 's/<title>.*</title>/"what do I put here"/p' input.file 

我只想打印出来。*是我输入“我在这里放什么”的地方。在这一点上我对sed不太满意所以这可能是一个非常简单的答案,而我在其他任何问题中找不到它。提前谢谢!

1 个答案:

答案 0 :(得分:3)

\(...\)中捕获您想要提取的模式,然后您可以在替换字符串中将其称为\1

sed -n 's/<title>\(.*\)</title>/\1/p' input.file 

您可以拥有多个\(...\)个表达式,并使用\1\2\3等方式引用它们。

如果您的GNU版本为sedgsed,那么您可以简化一下:

sed -rn 's/<title>(.*)</title>/\1/p' input.file 

使用-r标记,sed可以使用“扩展正则表达式”,这实际上是让您编写(...)而不是\(...\)+而不是\+和其他好东西。