Remover conteúdo depois de uma string em várias linhas [RESOLVIDO]

1. Remover conteúdo depois de uma string em várias linhas [RESOLVIDO]

Mestre Kame
mlgrassi

(usa Debian)

Enviado em 28/12/2010 - 17:16h

Galera, estou precisando do seguinte:

Como posso utilizar o sed para remover, em várias linhas de um arquivo E depois de uma determinada string com excessão dessa string, tudo o que está depois da string nas linhas do arquivo? Ficou confusa minha pergunta? Vou dar um exemplo para melhor entendimento:

Tenho um arquivo com o seguinte conteúdo:

abcdefghijKteste1234567
lmnopqrSteste349800
mndtsgetdeGteste147854
asdererzdfTteste25474

Todas as linhas possuem a string teste. Em todas as linhas quero eliminar tudo o que está depois da string teste, mas não quero que teste seja eliminada. Como faço isso com sed?

Outro caso. Como faço para excluir tudo o que está após teste, sem excluir teste E somente nas linhas 1 e 4 (por exemplo).


  


2. Re: Remover conteúdo depois de uma string em várias linhas [RESOLVIDO]

euteste da silva
foxbit3r

(usa Solaris)

Enviado em 28/12/2010 - 20:07h

bom... eu não fiz com o sed, mas acho que isso pode te ajudar.
Basta criar um arquivo arq.txt e passar os dados que você vai trabalhar pra ele, então você chama o script aqui.
Este script faz o que vc tá pedindo

#!/usr/bin/perl
open(FH,"arq.txt");
open(FH2,"> saida.txt");

$contador=0;

while($linha=<FH>){

last if($contador == 4);

chomp $linha;
if( $linha =~ m/teste/) {

@str1 = split(//,$linha);
$n = @str1;

for($i=0; $i<$n; $i++){
if($str1[$i] =~ /\D/){
print $str1[$i];
print FH2 $str1[$i];
}
}

print "\n";
print FH2 "\n";
}
$contador++;
}
close(FH);
close(FH2);
~


3. Re: Remover conteúdo depois de uma string em várias linhas [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 28/12/2010 - 23:23h

da para determinar isso como coluna

ex:

abcdefghijKteste1234567

teste seria o que separa da primeira coluna "abcdefghijK" da segunda coluna "1234567"

==================

ai teria que usar um delimitador "não lembro se essa palavra existe hehehe" para fazer isso

ja fiz isso, mas era separado por um unico caractere, tipo um ; . ou ,

ai dpois é só exibir a 1° coluna+teste e redirecionar para um arquivo

se não me engado era algo assim

$ cat arquivo.txt | awk -Fteste '{print $1"teste"}' >> arquivo2.txt

não da p testar agr, mais tarde eu dou uma olhada com mais atenção, ai eu te falo

da uma olhada na parte awk+sort nesse link

http://www.zago.eti.br/script/awk.html


4. mais coisa

Perfil removido
removido

(usa Nenhuma)

Enviado em 28/12/2010 - 23:36h

mals pelo post seguido

da para exibir determinada linha, ai da p fazer uma filtragem com o grep

ex:

--------------
#!/bin/bash
VAR1=`cat arquivo.txt | awk 'NR == 1'`
cat arquivo.txt | grep -i "$VAR1" >> arquivo2.txt
--------------

VAR1 vai ter o valor da 1° linha, nesse caso seria abcdefghijKteste1234567

não lembro bem se era -i que ignorava a linha que tivese tal conteudo, e não lembro se tem que usar a opção -w que seria o conteudo exato a ser filtrado

ex:
cat arquivo.txt | grep test

vai exibir todas as linha e que tenha a letra "test", a palavra abcdefghijKteste1234567 vai aparecer

com a opção -w não

cat arquivo.txt | grep -w test

só vai mostar se tiver a palavra "test" que é totalmente diferente de "abcdefghijKteste1234567" ou "teste"

se der errado tenta assim

--------------
#!/bin/bash
VAR1=`cat arquivo.txt | awk 'NR == 1'`
cat arquivo.txt | grep -iw "$VAR1" >> arquivo2.txt
--------------

não é necessário usar o cat, pode ser o more "que é o que eu uso =)"

--------------
#!/bin/bash
VAR1=`cat arquivo.txt | awk 'NR == 1'`
more arquivo.txt | grep -i "$VAR1" >> arquivo2.txt
--------------

http://www.zago.eti.br/script/grep.html



  



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts