Localizando e removendo linhas de um arquivo de texto (linux)

0

Eu tenho um arquivo de texto com uma lista de endereços de todas as conexões recentes. Eu corri o seguinte comando:

netstat -natu | grep 'ESTABLISHED' > temp.txt 

Eu então comecei a filtrar tudo no arquivo, mas os IPs com:

grep -oP '(\d{1,3}\.){1,3}\d{1,3}' temp.txt > IPs.txt  

Agora eu estou querendo saber se existe uma maneira de encontrar um IP certian neste arquivo de texto e (se possível) remover completamente a linha. Basicamente, filtre os endereços de host locais (127.0.0.0), para que eu fique com apenas os endereços externos. Mas não tenho certeza se entendi como deveria estar fazendo isso.

Seria mais fácil filtrar os IPs locais em algum lugar durante esse processo ou simplesmente filtrá-los para fora do arquivo de texto resultante?

Se alguém tiver alguma ideia, ficarei feliz em ouvi-la. Eu não estou muito familiarizado com o grep, mas estou aprendendo lentamente ... Agradeço antecipadamente.

    
por user7980 25.06.2014 / 23:26

1 resposta

0

Os endereços externos já estão em uma coluna diferente na saída do netstat. Em vez de grep -o , que imprime IPs locais e externos, use o awk para imprimir apenas os IPs estrangeiros:

netstat -natu | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 > IPs.txt

Isso também lhe dá a opção de remover o -n do netstat para que você possa ver os nomes em vez dos IPs.

E se você quiser remover duplicatas, canalize tudo para sort -u


Editar:
E para responder a pergunta real feita no título, você pode remover todas as linhas do arquivo que contêm exatamente o IP de loopback com o seguinte comando:

sed -i '/^127.0.0.1$/ d' temp.txt

    
por 26.06.2014 / 02:24

Tags