我想使用这种模式检索4chan线程的板名:
echo $(cat ~/Desktop/test.html | sed -n "s/<title>\(.*\) - />\1</p")
test.html包含:
<link rel="shortcut icon" href="http://static.4chan.org/image/favicon.ico" /><link rel="stylesheet" type="text/css" href="http://static.4chan.org/css/yotsuba.9.css" title="Yotsuba"><link rel="alternate stylesheet" type="text/css" href="http://static.4chan.org/css/yotsublue.9.css" title="Yotsuba B"><link rel="alternate stylesheet" type="text/css" href="http://static.4chan.org/css/futaba.9.css" title="Futaba"><link rel="alternate stylesheet" type="text/css" href="http://static.4chan.org/css/burichan.9.css" title="Burichan"><title>/b/ - Random</title>
我想匹配/ b /,而是只删除“<title>
”和“-
”,如下所示:
<link rel="shortcut icon" href="http://static.4chan.org/image/favicon.ico" /><link rel="stylesheet" type="text/css" href="http://static.4chan.org/css/yotsuba.9.css" title="Yotsuba"><link rel="alternate stylesheet" type="text/css" href="http://static.4chan.org/css/yotsublue.9.css" title="Yotsuba B"><link rel="alternate stylesheet" type="text/css" href="http://static.4chan.org/css/futaba.9.css" title="Futaba"><link rel="alternate stylesheet" type="text/css" href="http://static.4chan.org/css/burichan.9.css" title="Burichan">>/b/<Random</title>
为什么?
答案 0 :(得分:1)
因为你只是告诉它替换。如果您想从开头到结尾删除,则需要使用^
和$
来锚定结尾,并匹配其间的所有字符。
答案 1 :(得分:1)
这样的事情:
sed -n "s/.*<title>\([^<>]*\) - .*/\1/p" ~/Desktop/test.html
你的问题是你的正则表达式与字符串的开头不匹配(在我的情况下。*执行此操作“和字符串结尾(在我的情况下,它再次是”。*“)