Como excluo todas as linhas com “.png” em um arquivo?

4

Eu tenho uma lista de urls dos quais alguns apontam para imagens:

http://s.thebrighttag.com/iframe?c=A5lqOqP
http://s.wordpress.com/imgpress?resize=136,136&url=http%3A%2F%2Fdata.whicdn.com%2Fimages%2F2833524%2F4thofJuly-collage_large.jpg%3F1278084193

Como removo essas linhas do arquivo?

    
por simpatico 26.08.2011 / 05:41

4 respostas

14
cat file | grep -v "\.png" >new_file_without_pngs

Atualizado para comentar:

egrep -iv "\.(png|jpg|jpeg|gif|etc)" file >new_file
    
por 26.08.2011 / 05:45
6

Para a variante de edição no local, você pode usar sed da seguinte forma:

$ sed -i -r 's/.*\.(png|jpg).*//I' file

Ele removerá as linhas contendo .png ou .jpg diretamente no arquivo. A opção -i passada para sed significa 'edição no local'. Faça um backup do seu arquivo antes de executar este comando, ou tente primeiro sem a opção -i se não tiver certeza.

O sinalizador I é para realizar uma correspondência sem distinção entre maiúsculas e minúsculas.

    
por 26.08.2011 / 06:38
1

Você pode usar o Vim no modo Ex:

ex -sc 'g/\.png/d' -cx file
  1. g pesquisa global

  2. d delete

  3. x salvar e fechar

por 12.04.2016 / 05:49
0

Se você tiver sponge , você pode trocar o conteúdo de um arquivo como este:

grep -E -iv "\.(png|jpg|jpeg|gif)" file | sponge file
    
por 26.08.2011 / 11:30

Tags