Tenho dados não padrão, que gostaria de padronizar
Arquivo:
d101 11001
e101 9665
f101 9663
d102 11002
e102 11003
f102 11004
g102 11005
saída desejada:
d101 11001
e101 12001
f101 12002
d102 11002
e102 11003
f102 11004
g102 11005
então a lógica deve ser, se o comprimento da coluna2 = 4 deve substituí-lo com numeração incremental de uma série fornecida: neste caso 1200 é a série, & 1, 2, 3 .. são incrementos.
Observe que primeiro incrementamos
n
e depois atribuímos, para usar o novo valor. Se quiséssemos começar a imprimir12000
, usaríamos:$2=n++
, primeiro atribuir e depois aumentar.Usando Raku (anteriormente conhecido como Perl6)
Resumidamente, o raku é chamado na linha de comando com os
-ne
sinalizadores (em linha, sem impressão automática). Umastate
variável é declarada (uma vez e apenas uma vez), para incrementar dentro do código. Na segunda instrução, a.words[0]
primeira 'palavra' separada por espaços em branco (ou seja, coluna) éprinted
seguida por um espaço em branco~
concatenado com til" "
(para separar as colunas de saída). Na terceira instrução, oS///
comando de substituição (big-S) procura\d**4
exatamente 4 dígitos dentrogiven .words[1]
(a segunda coluna). Uma correspondência é substituída por{++$i + 12000}
um valor calculado (curlies denotam blocos de código dentro de regexes) e retornado (porqueS///
a substituição de big-S retorna a string modificada).Entrada de amostra:
Saída de amostra:
https://raku.org