将正则表达式转换为Sed

时间:2015-09-19 18:03:21

标签: regex sed

我有以下正则表达式。

/http:\/\/([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9\-]+:[a-zA-Z0-9\-]+\/[a-zA-Z]+\.[a-zA-Z]+/g

标识匹配的网址(https://regex101.com/r/sG9zR7/1)。我需要修改它,以便能够在命令行上使用它,以便打印出结果。所以我将其修改为以下

sed -n 's/.*\(http:\/\/\([a-zA-Z0-9\-]+\.\)+[a-zA-Z0-9\-]+:[a-zA-Z0-9\-]+\/[a-zA-Z]+\.[a-zA-Z]+\).*/\1/p' filename 

(我试图为添加的字符添加粗体,但不能) 有以下

sed -n's /.*((开头)

\ (对于内括号)

)。* / \ 1 / p'文件名(最后)

但是,当我执行它时,我没有得到任何结果。

2 个答案:

答案 0 :(得分:0)

通过xidel

,您可以通过xpath查询实现相同的目标
xidel file.html -e '//a/@href[fn:matches(.,"http://[^/]*:")]/fn:substring-after(.,"=")'

答案 1 :(得分:-1)

sed -rn 's~.*(http://([a-z0-9\-]+.)*[a-z0-9\-]+:[0-9]+\/[a-z0-9]+.[a-z]+).*~\1~ip' Filename是工作命令。在提供的样本的帮助下(谢谢hjpotler92),我能够找出不需要应用于某些字符的转义字符。在使用-r选项时,必须找出何时以及如何应用它。