+ Responder ao Tópico



  1. #1
    void_main_void
    Visitante

    Padrão Eliminar linhas de arquivo

    boa tarde povo... essa é para os ninjas, hehehe... seguinte, tenho um arquivo texto e quero apagar dele todas as linhas que contenham duas determinadas palavras... por exemplo, apagar a linha que contenha a palavra "teste" e "192.168.0.10" (somente linhas que contenham as duas palavras ao mesmo tempo)

    bem, para apagar linhas que contenham uma palavra apenas eu consegui, assim:

    sed 's/teste//g' arquivo > arquivo2 ; mv arquivo2 arquivo

    isso resolve essa situação, mas e para implementar para duas palavras? vejam bem tem que ser usando E, ou seja, linhas que contenham uma palavra E a outra... não posso apagar linhas que contenham apenas uma delas...

    sei que é meio doido isso, mas com certeza deve existir uma saida...

    ja me deram essa idéia:

    #!/bin/bash
    for X in $(cat arq.txt | grep -v palavra | sed 's/ /<space>/g')
    do
    reg=$(echo $X | sed 's/<space>/ /g')
    echo $reg >> arquivo2.txt
    done

    ma isso quebra as linhas do arquivo e ainda apaga linhas que tenham uma palavra OU a outra... isso não serve...

    mais ou menos isso

    no aguardo... :0)

  2. #2
    void_main_void
    Visitante

    Padrão Eliminar linhas de arquivo

    owpa, resolvido...

    sed '/string1.*string2/d;/string2.*string1/d' arquivo.txt

    falow...

  3. #3

    Padrão Eliminar linhas de arquivo

    cat file | grep teste | grep 192.168.0.10 > file

  4. #4
    belvio
    Visitante

    Padrão Eliminar linhas de arquivo

    segue um pequeno script feito em perl acho que ele resolve seu problema.


    #!/usr/bin/perl
    die("O arquivo $ARGV[0] não existe ou você não tem permissão de leitura!!!!\n\n") unless(open(myfile,$ARGV[0]));
    $line = <myfile>;
    while ($line ne "")
    {
    chop($line);
    unless ($line =~ s/teste//g && $line =~ s/192.168.0.10//g)
    {
    print ("$line");
    print ("\n");
    }
    $line = <myfile>;
    }

  5. #5
    void_main_void
    Visitante

    Padrão Eliminar linhas de arquivo

    valeu, mas como disse na mensagem anterior ja resolvi com o sed..

    de qualquer forma, obrigado...

  6. #6
    belvio
    Visitante

    Padrão Eliminar linhas de arquivo

    blz se o arquivo for pequeno o sed resolve sem problemas, mas se o arquivo for muito grande algo como 20000 linhas vc vai ver uma diferença considerável de performace usando o perl.