我有一个文件,我希望使用()
来选择一段文字,并$1
和$2
分别替换一个字符串。
http://127.0.0.1:5080/tarballs/(.+)/(.+).tgz
https://registry.npmjs.org/$1/-/$1-$2.tgz
我怎样才能在unix中执行此操作?我想运行这样的命令:
$ regex-replace ./file.txt "http://127.0.0.1:5080/tarballs/(.+)/(.+).tgz" "https://registry.npmjs.org/$1/-/$1-$2.tgz"
答案 0 :(得分:1)
您可以使用sed
:
s='http://127.0.0.1:5080/tarballs/user/file.tgz'
sed -E 's~http://127\.0\.0\.1:5080/tarballs/(.+)/(.+.tgz)$~https://registry.npmjs.org/\1/-/\1-\2~' <<< "$s"
https://registry.npmjs.org/user/-/user-file.tgz
~
在s
的{{1}}(替换)命令中使用了正则表达式分隔符。sed
用于扩展正则表达式支持。-E
和\1
是2个捕获组的反向引用。