Mover a linha combinada acima de uma linha diferente usando sed

3

Eu tenho algo parecido com

dsadjakldjska
safdsfdsfsf
fdsfsf**STGN**fdsfsd
fdsfkjldsf
fdsff
fdsfs**IRV**fdsfs

e eu quero pegar

dsadjakldjska
safdsfdsfsf
fdsfkjldsf
fdsff
fdsfsf**STGN**fdsfsd
fdsfs**IRV**fdsfs

mas apenas para um intervalo de linhas (digamos 40000 até o final do arquivo) (movendo a linha contendo STGN logo acima do próximo IRV abaixo dele)

Alguma idéia de como eu posso fazer isso, ou se há uma alternativa melhor para isso do que sed?

    
por confused00 12.08.2014 / 17:05

1 resposta

3
awk 'NR < 40000 {print; next}
     /\*\*STGN\*\*/ {line = $0; next}
     /\*\*IRV\*\*/ && line {print line; line=""}
     {print}'

com sed :

sed -e '40000,$!b' -e '/\*\*STGN\*\*/{h;d;}' -e '/\*\*IRV\*\*/{x;/./p;s/.*//;x;}'

(eles assumem que o STGN ocorre antes do IRV).

    
por 12.08.2014 / 17:09

Tags