subsituir removendo a numeração zero

1

Gostaria de substituir em um arquivo txt os seguintes destinos, por exemplo

"code_000040" por "code_40" e "code_067340" por "code_67340" e assim por diante ...,

em outras palavras, para remover os zeros nos IDs de 6 números antes que o ID de numeração real seja iniciado

Pegue qualquer ajuda !!

    
por user61677 03.03.2014 / 12:26

2 respostas

1

A maneira mais fácil é usar sed:

for file in code_*; do
  newname=$(echo $file | sed 's/_0*/_/')
  mv "$file" "$newname" #you may want to use -i to avoid accidents
done

Eu costumo escrever isso em uma linha.

O loop externo pode ser qualquer coisa: um loop for com um glob como acima, uma lista de arquivos ou até mesmo um comando find piped in while read;

    
por 03.03.2014 / 12:48
1

Se você quiser substituir o texto dentro do arquivo, com GNU sed , você poderia fazer:

sed -i 's/code_0*\([0-9]\)/code_/g' file.txt

ou

perl -i -pe 's/code_0+(\d+)/code_$1/g' file.txt

Isso modificará o arquivo original, removerá o -i para manter o arquivo inalterado ou fornecerá um argumento para -i criar um arquivo de backup (isso criará uma cópia do original chamado file.txt.bak ):

perl -i.bak  -pe 's/code_0+(\d+)/code_$1/g' file.txt
    
por 03.03.2014 / 16:48