仅删除两个已知字符串之间的字符

时间:2019-06-13 04:00:46

标签: regex awk sed grep

我想删除%//之间的/符号,但不要在此之外。

这里是一个例子:

https://delete%me.com/butnot%this
https://donotdelete.me/test

我会使用sed,grep或awk。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下操作:

sed 's|\(//[^/]*\)%\([^/]*/\)|\1\2|g'

说明

s            # substitude
|            # separator
\(//[^/]*\)  # pattern start with // --> save in arg1 (\1)
%            # pattern contains %    --> ignore
\([^/]*/\)   # pattern ends with /   --> save in arg2 (\2)
|            # separator
\1\2         # print arg1 and arg2
|            # separator
g            # global on whole line

测试

$ echo "https://delete%me.com/butnot%this" | sed 's|\(//[^/]*\)%\([^/]*/\)|\1\2|g'
https://deleteme.com/butnot%this

$ echo https://donotdelete.me/test | sed 's|\(//[^/]*\)%\([^/]*/\)|\1\2|g'
https://donotdelete.me/test