Isso substituirá todos os dígitos entre colchetes por asteriscos:
sed 's/\[[0-9]*\]/\[*\]/g'
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.
Isso substituirá todos os dígitos entre colchetes por asteriscos:
sed 's/\[[0-9]*\]/\[*\]/g'
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'