awk ou sed ou perl: remova apenas caracteres em uma posição específica

0

Eu tenho vários arquivos para renomear

    leng-1494-001
    leng-1464-002
    leng-2414-004
    leng-7894-005
    leng-1323-006

Eu quero renomeá-lo

    ferr-1494-001
    ferr-1464-002
    ferr-2414-004
    ferr-7894-005
    ferr-1323-006

Eu sei como fazer para ferr e leng, mas como substituir caracteres de 6 a 10 (1464,7894) com linha em branco, por exemplo, ou string como aaaa bbbb cccc usando sed? Também solução awk ou perl é bem vinda. Obrigado

    
por elbarna 22.05.2015 / 02:43

3 respostas

1

POSIXly:

$ sed -e 's/-[^-]*-/-/' file
    leng-001
    leng-002
    leng-004
    leng-005
    leng-006
    
por 22.05.2015 / 03:12
2

Usando sed:

sed -r 's/(.*[a-zA-Z]{4}\-)([0-9]{4})/aaaa/g'
    
por 22.05.2015 / 03:07
1

Eu encontrei uma solução usando a função de substring perl

echo     leng-1323-006|perl -lpe 'substr($_, 5, 5) = "";'

retornar corretamente

leng-006

Eu removi da posição 5 os 5 caracteres ruins incluem o -

    
por 22.05.2015 / 03:25

Tags