所以我试图将regexp与其中间的任何字符串匹配,然后打印出该字符串。语法有点像......
sed -n 's/<title>.*</title>/"what do I put here"/p' input.file
我只想打印出来。*是我输入“我在这里放什么”的地方。在这一点上我对sed不太满意所以这可能是一个非常简单的答案,而我在其他任何问题中找不到它。提前谢谢!
答案 0 :(得分:3)
在\(...\)
中捕获您想要提取的模式,然后您可以在替换字符串中将其称为\1
:
sed -n 's/<title>\(.*\)</title>/\1/p' input.file
您可以拥有多个\(...\)
个表达式,并使用\1
,\2
,\3
等方式引用它们。
如果您的GNU版本为sed
或gsed
,那么您可以简化一下:
sed -rn 's/<title>(.*)</title>/\1/p' input.file
使用-r
标记,sed
可以使用“扩展正则表达式”,这实际上是让您编写(...)
而不是\(...\)
,+
而不是\+
和其他好东西。