Substituir apenas caracteres após símbolo e antes de outro?

1

Estou tendo muita dificuldade com isso. Desculpas pela pergunta noobish.

As linhas ganham isso:

192.168.1.234/50112(LOCAL\username)

Saída desejada:

192.168.1.234-(LOCAL\username)

Eu sei que posso fazer uma declaração que procure "todos os caracteres após / " na primeira parte, já que essa barra é a primeira instância de uma barra em cada linha.

Como substituo o número entre / e ( por - em cada linha?

    
por beansbeans 05.04.2018 / 16:55

1 resposta

3

Se é sempre dígitos, você pode dizer

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

Caso contrário, se você não souber o que está lá, combine a barra e um ou mais caracteres não parênteses

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

Você pode fazer isso direito no bash com globbing estendido:

$ shopt -s extglob
$ echo "${line/\/+([0-9])/-}"
192.168.1.234-(LOCAL\username)
    
por glenn jackman 05.04.2018 / 17:01