我想请求我的正则表达式的帮助.我需要从每个URL中提取最后一部分.我在下面的示例中将其标记为"to_extract".
我想知道以下正则表达式与sed一起使用时出了什么问题:
sed 's/^[ht|f]tp.*\///' file.txt
Run Code Online (Sandbox Code Playgroud)
file.txt的示例内容:
http://a/b/c/to_extract
ftp://a/b/c/to_extract
...
Run Code Online (Sandbox Code Playgroud)
我只获得了ftp链接的正确结果,而不是http.在此先感谢您对此的解释.一世.
更改[ht|f]到(ht|f),这将提供更好的结果.
[abc]指"一个字符是a,b或c".
[ht|f]意思是"一个字符是h,t,|或者f",而不是在所有你想要的东西.
在某些版本的sed上,您必须使用该-r选项调用它,以便可以使用扩展的正则表达式:
sed -r 's/^(ht|f)tp.*\///' file.txt
Run Code Online (Sandbox Code Playgroud)
如果你只想提取网址的最后一部分而不想要任何其他内容,你可能想要
sed -rn 's/^(ht|f)tp.*\///p' file.txt
Run Code Online (Sandbox Code Playgroud)