Удалить только символ между двумя известными строками - PullRequest
0 голосов
/ 13 июня 2019

Я хочу удалить символ %, когда он встречается между // и /, но не за его пределами.

Вот пример:

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

Я бы использовал sed, grep или awk.

1 Ответ

0 голосов
/ 13 июня 2019

Вы можете попробовать это:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...