Como usar o sed para modificar os últimos 3 dígitos de uma linha com um número aleatório quando uma string corresponde a um arquivo

0

Eu tenho um arquivo 'a.txt' que tem um conteúdo:

K8A2-19C204-BA109691  
ML_18.10.4-109691  

Como posso pesquisar uma string, diga "ML_" no arquivo e, se ela corresponder, modifique os últimos 3 dígitos dessa linha com alguns números aleatórios usando o comando "sed" no script bash.
Eu sou capaz de alterar os últimos 3 números para alguns números fixos com o comando:

sed -i '/ML_/s/[0-9][0-9][0-9]$/012/' file_name  

Mas não sei como mudar com números aleatórios

    
por Deepak 21.03.2018 / 18:24

1 resposta

0

Se você não tem nenhum requisito específico para a aleatoriedade, então você pode usar o bash shell embutido em RANDOM , como mencionado nos comentários, por exemplo,

$ sed '/^ML_/ s/[0-9]\{3\}$/'$(printf '%03d' $((RANDOM%1000)))'/' a.txt 
K8A2-19C204-BA109691
ML_18.10.4-109133

Se você precisar de números aleatórios "melhores", sugiro que abandone sed em favor de perl e procure por um módulo de número aleatório adequado.

    
por steeldriver 21.03.2018 / 18:58