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

Nevermind, мне удалось решить все это, сбросив dconf и переустановив gnome-shell-extension-ubuntu-dock (благодаря @pomsky).

1
задан 5 April 2018 в 17:55

3 ответа

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

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

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

[ f2]

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

$ shopt -s extglob
$ echo "${line/\/+([0-9])/-}"
192.168.1.234-(LOCAL\username)
3
ответ дан 22 May 2018 в 11:35
  • 1
    Отлично! Я использовал первый пример, так как текст между этими двумя символами всегда представляет собой набор цифр. Работает как шарм. Большое спасибо за Вашу помощь. – beansbeans 5 April 2018 в 19:00

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

$ 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
ответ дан 17 July 2018 в 17:26

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

$ 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
ответ дан 23 July 2018 в 18:14

Другие вопросы по тегам:

Похожие вопросы: