Renomeação do diretório Regex

0

Não sou muito bom com a regex e não consigo descobrir porque isso está selecionando o próximo caractere após a -

/[\-][^ - ]/g

com isso, seleciona - e o caractere seguinte.

Eu quero selecionar o traço entre dois números, mas não quero selecionar nenhum traço que tenha um espaço antes e depois.

na realidade, estou tentando usar isso no ubuntu para renomear recursivamente os diretórios que são nomeados

#### - ##-##

para

#### - ##:## 
    
por Russ 13.01.2016 / 07:02

1 resposta

0

Normalmente, um transformaria padrões como esse ancorando o traço nos dígitos que o cercam, por exemplo,

foo="123 - 456-78"
bar=$(echo "$foo" | sed -r -e 's,([[:digit:]])-([[:digit:]]),:,')

Ou seja, combinando um dígito em cada lado e usando uma referência de retorno para colocar os dígitos de volta.

Na verdade, sed não é um bom exemplo, já que é (como bash ) um uso de EREs (expressões regulares estendidas) e não padrão . No entanto, como isso é para o Ubuntu, podemos supor que você está usando o GNU sed , que tem uma opção -r para especificar EREs.

    
por 13.01.2016 / 10:55