Tenho 2.250 arquivos de metadados que precisam ter um número único começando em 0 até 2.249, conforme linha abaixo.
"name": "KF # RENUMBER",
Usei o comando perl (perl -pi -w -e 's/SEARCH_FOR/REPLACE_WITH/g;' *.json) para substituir uma palavra pelo que preciso em vários arquivos, mas não consigo descobrir como. de substituí-lo por uma palavra, substituí-lo pelos números para que no final do dia eu tenha vários arquivos que tenham uma linha como:
"name": "KF # 1",
"name": "KF # 2",
...
"name": "KF # 2249",
tenteiperl -pi -w -e 's/RENUMBER/$count++;/g;' *.json
mas isso retornou "name": "KF # ++;",
em todos os arquivos
Estou usando o terminal no MacOS para fazer isso, se isso for importante.
Qualquer ajuda seria apreciada! obrigado!
Você precisa dizer ao Perl que a parte de substituição não é uma string, mas algum código para executar:
"e" significa "avaliar".
Além disso, se você quiser começar em 1 e não em 0, mude para
++$count
.Você também pode incrementar a variável fora da substituição.
Isto se comporta de maneira diferente se houver mais de um RENUMBER por linha (o anterior substitui cada um por um número diferente, este usa o mesmo número para toda a linha). Presumi que nunca há mais de um RENUMBER por linha e, portanto, removi o arquivo
/g
.Você precisa adicionar o
e
sinalizador à suas//
expressão, que diz ao Perl para avaliar a parte de substituição como uma expressão:Dados três arquivos,
data{1,2,3}.json
cada um contendo:A execução do comando acima resulta em: