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)
Eliminar linhas de arquivo
owpa, resolvido...
sed '/string1.*string2/d;/string2.*string1/d' arquivo.txt
falow...
Eliminar linhas de arquivo
cat file | grep teste | grep 192.168.0.10 > file
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>;
}
Eliminar linhas de arquivo
valeu, mas como disse na mensagem anterior ja resolvi com o sed..
de qualquer forma, obrigado...
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.