Bash sed从url中删除尾部斜杠
我正在尝试使用sed从URL中删除尾部斜杠。我可以使用以下命令成功删除尾随斜杠(请注意它位于package.json的构建脚本中,因此转义引号和双反斜杠) 但是,我担心这可能有点过分,我想确保这只是针对带有href属性的url,但我不确定如何使BRE捕获url,而不是最后的尾随斜杠。基本上,我正在尝试使用捕获组来实现这一点,但我认为现在这就是过于贪婪的问题所在。我尝试了以下方法,但似乎与任何方法都不匹配:Bash sed从url中删除尾部斜杠,bash,sed,Bash,Sed,我正在尝试使用sed从URL中删除尾部斜杠。我可以使用以下命令成功删除尾随斜杠(请注意它位于package.json的构建脚本中,因此转义引号和双反斜杠) 但是,我担心这可能有点过分,我想确保这只是针对带有href属性的url,但我不确定如何使BRE捕获url,而不是最后的尾随斜杠。基本上,我正在尝试使用捕获组来实现这一点,但我认为现在这就是过于贪婪的问题所在。我尝试了以下方法,但似乎与任何方法都不匹配: "build": "sed -i -e 's/href=\"\\(.*\\)*\\/\"/
"build": "sed -i -e 's/href=\"\\(.*\\)*\\/\"/href=\"\\1\"/g' index.html"
我怎么能这样做呢
i、 e
所以href=”https://example.com/path/foo/bar/"
变成href=”https://example.com/path/foo/bar“如果要将捕获组与
sed
一起使用,必须指定-r
选项:
echo 'href="google.nl/"' | sed -r "s#href\=(\"|')([^'\"]*)/(\1)#href=\1\2\1#g"
手册页:
-E、 -r,--regexp扩展在脚本中使用扩展正则表达式(为了便于移植,请使用POSIX-E) 正则表达式的输出:
href="google.nl/d" = href="google.nl/d"
href="google.nl" = href="google.nl"
href="google.nl/" = href="google.nl"
sed接受搜索和替换命令的任何分隔符。因此,我建议使用例如
#
而不是斜杠,以避免将分隔符与搜索模式混淆
为了不贪婪,从小丑列表中排除引号([^”]*
)
应该做这项工作捕获组在没有-r标志的情况下为我工作,事实上,该标志导致命令失败,说它是非法的(如果有区别的话,我在osx上运行此命令)
href="google.nl/d" = href="google.nl/d"
href="google.nl" = href="google.nl"
href="google.nl/" = href="google.nl"
sed 's#href="\([^"]*\)/"#href="\1"#g' yourfile