Usando sed para alinhar texto começando do padrão até o final da linha

1

Eu tenho um texto assim:

    LDX LEVEL
    LDA INITD015,X       ; INITIAL ACTIVE SPRITES
    STA $D015
    STA SAVED015
    LDA INITXPOS,X      ; INITIAL HERO X COORDINATE
    STA XPOS
    LDA INITYPOS,X               ; INITIAL HERO Y COORDINATE
    STA YPOS
    LDA INITXPOSMUM,X            ; INITIAL MUMMY X COORDINATE
    STA XPOSMUM
    LDA LEVEL
    BNE NOTLOADENDELEMENTS
    LDA FLAGLOSELIFE
    BNE NOTLOADENDELEMENTS
;    LDX #<BIGELEMENTSFILE  ; LOW BYTE
;    LDY #>BIGELEMENTSFILE ; HI BYTE
;    JSR LOADFILE_EXOMIZER

onde preciso alinhar o texto a partir de ";" NÃO é o primeiro char de uma linha, até o final da linha, no número de char 41 da linha. Linhas começando com ";" deve ser intocado até (e se) o segundo ";" é ecountred, então olhando de segundo ";" para o final da linha deve ser alinhado no char 41. Talvez o segundo ";" é antes ou depois do char 41.

Pode ser conseguido usando SED ou AWK?

    
por Flavio Pasqualin 29.09.2014 / 23:02

1 resposta

2

Que tal o perl?

perl -pe 's/^(.+?)(?=;)/$1 . " "x(41-length($1))/e' file
    LDX LEVEL
    LDA INITD015,X                       ; INITIAL ACTIVE SPRITES
    STA $D015
    STA SAVED015
    LDA INITXPOS,X                       ; INITIAL HERO X COORDINATE
    STA XPOS
    LDA INITYPOS,X                       ; INITIAL HERO Y COORDINATE
    STA YPOS
    LDA INITXPOSMUM,X                    ; INITIAL MUMMY X COORDINATE
    STA XPOSMUM
    LDA LEVEL
    BNE NOTLOADENDELEMENTS
    LDA FLAGLOSELIFE
    BNE NOTLOADENDELEMENTS
;    LDX #<BIGELEMENTSFILE               ; LOW BYTE
;    LDY #>BIGELEMENTSFILE               ; HI BYTE
;    JSR LOADFILE_EXOMIZER

awk

awk '
    (p=index(substr($0,2), ";")) > 0 {
        printf "%-40s%s\n", substr($0,1,p), substr($0,p)
        next
    }
    {print}
' file
    
por 29.09.2014 / 23:21

Tags