Вопрос Заменить только символы после символа и перед другим?


У меня настоящие трудности с этим. Извинения за вопрос noobish.

Линии grepped out дают следующее:

192.168.1.234/50112(LOCAL\username)

Желаемый результат:

192.168.1.234-(LOCAL\username)

Я знаю, что могу сделать заявление, которое ищет «все символы после /«для первой части, поскольку эта косая черта - это первый экземпляр косой черты в каждой строке.

Как я заменю число между / а также ( с - в каждой строке?


1
2018-04-05 14:55


происхождения




ответы:


Если это всегда цифры, вы можете сказать

$ echo "$line" | sed 's,/[[:digit:]]\+,-,'
192.168.1.234-(LOCAL\username)

В противном случае, если вы не знаете, что там есть, сопоставьте косую черту и один или несколько символов без круглых скобок

$ echo "$line" | sed 's,/[^(]\+,-,'
192.168.1.234-(LOCAL\username)

Вы действительно можете сделать это прямо в bash с расширенным globbing:

$ shopt -s extglob
$ echo "${line/\/+([0-9])/-}"
192.168.1.234-(LOCAL\username)

3
2018-04-05 15:01



Отлично! Я использовал первый пример, так как текст между этими двумя символами всегда представляет собой набор цифр. Работает как шарм. Большое спасибо за Вашу помощь. - beansbeans