BASH: 将 PERL 替换为 SED 以进行就地替换
BASH: replacing PERL with SED for in-place substitution
想用 perl 替换此语句:
perl -pe "s|(?<=://).+?(?=/)|:80|"
和
sed -e "s|<regex>|:80|"
由于 sed 的正则表达式引擎功能要弱得多(例如,它不支持环视),因此任务归结为编写一个 sed 兼容的正则表达式以仅匹配完全限定的域名 URL .示例:
http://php2-mindaugasb.c9.io/Testing/JS/displayName.js
http://php2-mindaugasb.c9.io?a=Testing.js
http://www.google.com?a=Testing.js
应该变成:
http://:80/Testing/JS/displayName.js
http://:80?a=Testing.js
http://:80?a=Testing.js
这样的解决方案就可以了:
sed -e "s|<regex>|http://:80|"
谢谢:)
使用下面的 sed 命令。
$ sed "s~//[^/?]\+\([?/]\)~//$2:80~g" file
http://:80/Testing/JS/displayName.js
http://:80?a=Testing.js
http://:80?a=Testing.js
替换部分一定要转义$
sed 's|http://[^/?]*|http://:80|' file
输出:
http://:80/Testing/JS/displayName.js
http://:80?a=Testing.js
http://:80?a=Testing.js
想用 perl 替换此语句:
perl -pe "s|(?<=://).+?(?=/)|:80|"
和
sed -e "s|<regex>|:80|"
由于 sed 的正则表达式引擎功能要弱得多(例如,它不支持环视),因此任务归结为编写一个 sed 兼容的正则表达式以仅匹配完全限定的域名 URL .示例:
http://php2-mindaugasb.c9.io/Testing/JS/displayName.js
http://php2-mindaugasb.c9.io?a=Testing.js
http://www.google.com?a=Testing.js
应该变成:
http://:80/Testing/JS/displayName.js
http://:80?a=Testing.js
http://:80?a=Testing.js
这样的解决方案就可以了:
sed -e "s|<regex>|http://:80|"
谢谢:)
使用下面的 sed 命令。
$ sed "s~//[^/?]\+\([?/]\)~//$2:80~g" file
http://:80/Testing/JS/displayName.js
http://:80?a=Testing.js
http://:80?a=Testing.js
替换部分一定要转义$
sed 's|http://[^/?]*|http://:80|' file
输出:
http://:80/Testing/JS/displayName.js http://:80?a=Testing.js http://:80?a=Testing.js