substitui o número pelo padrão específico da estrela para o arquivo inteiro

2

No meu arquivo, quero substituir o número por *

Exemplo:

data[0] ---> data[*]

Eu tenho data[0] to data[127] e também quero fazer o arquivo inteiro. Então, como posso fazer apenas por número?

Eu tentei com o comando

sed 's/[[0-9][0-9]]/[*]/g'

mas não funciona corretamente.

Então, por favor, me guie.

    
por Vishal Patel 09.10.2018 / 10:00

2 respostas

0

Isso substituirá todos os dígitos entre colchetes por asteriscos:

sed 's/\[[0-9]*\]/\[*\]/g'
    
por 09.10.2018 / 11:40
0

Resposta: Veja como você pode alterar sua expressão provisória do SED ( sed 's/[[0-9][0-9]]/[*]/g' ):

sed -E 's/\[[0-9]{1,3}]/[*]/g'

Explicação:

  • escape do colchete inicial [ com uma barra invertida \ porque você deseja que a expressão corresponda a um literal [ em oposição a qualquer um dos caracteres que você escreve entre colchetes. Os colchetes subseqüentes não precisam escapar.

  • especifique quantos dígitos deseja corresponder: {1,3} significa qualquer número natural que comece com 1 e até 3 . Para que isso funcione, você precisa ativar expressões regulares estendidas com a opção -E (sem isso, você pode se contentar com sed 's/\[[0-9]*]/[*]/g' ). Ele deve estar disponível em sed , de acordo com man sed :

    the -E option has been supported for years by GNU sed, and is now included in POSIX.

Alternativa Perl aqui:

perl -pe 's/data\[\K\d+(?=])/*/g'
    
por 10.10.2018 / 15:26

Tags