Pular para o conteúdo

Subir determinadas linhas em um arquivo [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Subir determinadas linhas em um arquivo [RESOLVIDO]

Enviado em 26/06/2018 - 01:58h

Boa noite, estou criando um script e gostaria de saber se tem como eu trocar determinadas linhas de lugar, mais especificamente subir elas uma linha.

Tenho o seguinte arquivo de texto:
Imagine Dragons - Evolve
374
114.9 MB
Drake - Gods Plan
307
8.0 MB
VA-Nrj Hit Music Only
234
415.4 MB
Music for Your Car
219
763.0 MB
Helium Music Manager
211
15.5 MB


O modo como quero deixar é assim:
Imagine Dragons - Evolve
114.9 MB
374
Drake - Gods Plan
8.0 MB
307
VA-Nrj Hit Music Only
415.4 MB
234
Music for Your Car
763.0 MB
219
Helium Music Manager
15.5 MB
211

Quero passar essas linhas que contém o tamanho em MB/GB para a segunda linha. Já tentei de várias maneiras com o sed mas sem sucesso.

Responder tópico

2. Re: Subir determinadas linhas em um arquivo [RESOLVIDO]

Melhor resposta

Enviado em 26/06/2018 - 14:48h

Mashn escreveu:

Boa noite, estou criando um script e gostaria de saber se tem como eu trocar determinadas linhas de lugar, mais especificamente subir elas uma linha.

Tenho o seguinte arquivo de texto:
Imagine Dragons - Evolve
374
114.9 MB
Drake - Gods Plan
307
8.0 MB
VA-Nrj Hit Music Only
234
415.4 MB
Music for Your Car
219
763.0 MB
Helium Music Manager
211
15.5 MB


O modo como quero deixar é assim:
Imagine Dragons - Evolve
114.9 MB
374
Drake - Gods Plan
8.0 MB
307
VA-Nrj Hit Music Only
415.4 MB
234
Music for Your Car
763.0 MB
219
Helium Music Manager
15.5 MB
211

Quero passar essas linhas que contém o tamanho em MB/GB para a segunda linha. Já tentei de várias maneiras com o sed mas sem sucesso.
Boa tarde,
Segue sugestão:
sed -r 's/[MG]B$/&\n/' texto|awk 'BEGIN{FS="\n";RS="\n\n";} {OFS="\n";print $1,$3,$2}'
Imagine Dragons - Evolve
114.9 MB
374
Drake - Gods Plan
8.0 MB
307
VA-Nrj Hit Music Only
415.4 MB
234
Music for Your Car
763.0 MB
219
Helium Music Manager
15.5 MBMB
211


O comando:
sed -r 's/[MG]B$/&\n/' texto
Coloca uma linha "vazia" abaixo da linha com MB ou GB,
O awk inverte a ordem dos campos....

marcelo oliver

3. Re: Subir determinadas linhas em um arquivo [RESOLVIDO]

Enviado em 26/06/2018 - 08:16h

Poste seu script para podermos te ajudar.
Abraço,
Diego M. Rodrigues

4. Re: Subir determinadas linhas em um arquivo [RESOLVIDO]

Enviado em 26/06/2018 - 10:24h

Testaí:
for nl in `awk '/MB/{print NR - 1}' arquivo.txt`; do sed -i -n "$nl{h;n;G};p" arquivo.txt; done 

5. Re: Subir determinadas linhas em um arquivo

Enviado em 26/06/2018 - 10:49h

Teste com esse "pequeno monstrinho" em sed... :P

sed -n '/[^a-zA-Z]/{		
p
n
/[^0-9]/{
h
:a
n
p
x
bb
}
x
s/\([^\n]*\)\n\([^\n]*\)$/\2\n\1/
ba
}
:b
p' arquivo

6. Re: Subir determinadas linhas em um arquivo [RESOLVIDO]

Enviado em 26/06/2018 - 12:01h

SMarcell escreveu:

Teste com esse "pequeno monstrinho" em sed... :P

sed -n '/[^a-zA-Z]/{		
p
n
/[^0-9]/{
h
:a
n
p
x
bb
}
x
s/\([^\n]*\)\n\([^\n]*\)$/\2\n\1/
ba
}
:b
p' arquivo
Funcionou, muito obrigado.

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder