我有以下正则表达式。
/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'文件名(最后)
但是,当我执行它时,我没有得到任何结果。
答案 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选项时,必须找出何时以及如何应用它。