The UNIX and Linux Forums  


Go Back   O UNIX e Linux Forum > Top Fóruns > Programação Shell Script e
.
google unix.com



Programação Shell Script e Post perguntas sobre ksh, CSH, SH, BASH, Perl, PHP, SED, Awk e outros scripts shell e shell scripts línguas aqui.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
modificar um determinado padrão a partir de segunda linha de pesquisa padrão IMAS UNIX para Dummies Perguntas & Respostas 1 10-12-2008 02:19
modificar um determinado padrão a partir de segunda linha de pesquisa padrão IMAS UNIX para Dummies Perguntas & Respostas 2 10-12-2008 12:30
Como você pode apagar registros em um arquivo que correspondam a um padrão? mode09 UNIX para Dummies Perguntas & Respostas 2 07-15-2008 02:53
excluir colunas com uma linha padrão correspondência greptastic UNIX para Dummies Perguntas & Respostas 5 06-30-2008 04:32
Multile Padrão Pesquisa em uma mesma linha e apagar sasree76 Programação Shell Script e 2 04-16-2008 03:12

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 10-12-2008
IMAS imas is offline
Usuário
  
 

Join Date: Nov 2007
Lugares: 15
comentário / apagar um determinado padrão a partir de segunda linha da correspondência padrão

Oi,

Tenho arquivo 1.txt com as seguintes entradas como mostrado:

0152364 | 134444 | 10.20.30.40 | 015236433
0233654 | 122555 | 10.20.30.50 | 023365433
**
**
**

No arquivo 2.txt Eu tenho as seguintes entradas como mostrado:

0152364 | 134444 | 10.20.30.40 | 015236433
0233654 | 122555 | 10.20.30.50 | 023365433
0789456 | 332211 | 10.20.30.40 | 078945633
1234567 | 225522 | 10.20.30.50 | 123456733
0321654 | 999999 | 10.20.30.40 | 032165433
0456123 | 777899 | 10.20.30.40 | 045612333
***
***
***

Eu quero ter o endereço IP a partir de 1.txt coluna e, em seguida, busca-lo no 2.txt e comentar o duplicado entrada da segunda correspondência padrão.

ou seja, eu preciso ter a seguinte saída no 2.txt como mostrado:

0152364 | 134444 | 10.20.30.40 | 015236433
0233654 | 122555 | 10.20.30.50 | 023365433
# 0789456 | 332211 | 10.20.30.40 | 078945633
# 1234567 | 225522 | 10.20.30.50 | 123456733
# 0321654 | 999999 | 10.20.30.40 | 032165433
# 0456123 | 777899 | 10.20.30.40 | 045612333
***
***
***

Abaixo está o script que escrevi mas vai comentar todas as entradas duplicadas:

para i em `cat 1.txt | cut-d" | "-f3`
fazer
gato 2.txt |sed "s / ^ \ (.* \ | $ i \ |.*)/#/ g"> tmp.txt
mv tmp.txt 2.txt
feito

Pode orientar-me uma certa forma de deixar a primeira entrada duplicado intocado e comentar / delete duplicate entrada da segunda e assim por diante.

Por favor, não feche esta discussão se você não sabe a resposta.

Obrigado
-IMAS
  #2 (permalink)  
Old 10-12-2008
Franklin52 Franklin52 is offline Forum Staff  
Moderador
  
 

Join Date: Feb 2007
Mensagens: 4.342
Citação:
Originally Posted by IMAS View Post
Por favor, não feche esta discussão se você não sabe a resposta.
Será esta uma questão trabalho doméstico?
Assumindo que não é, qual é o mundo real problema da sua pergunta?

Atenciosamente
  #3 (permalink)  
Old 10-13-2008
IMAS imas is offline
Usuário
  
 

Join Date: Nov 2007
Lugares: 15
Sim a sua hipótese é correta e esse é um problema real do mundo

O que iam tentando fazer é comentar a segunda via IP's encontrados no arquivo de texto ignorando a primeira ocorrência, para ser válida para um IP válido e mac a partir da segunda ocorrência em diante comentando o duplicado IPs no início da linha.

1.txt arquivo com as seguintes entradas como mostrado:

0152364 | 134444 | 10.20.30.40 | 015236433
0233654 | 122555 | 10.20.30.50 | 023365433
**
**
**

2.txt arquivo com as seguintes entradas como mostrado:

0152364 | 134444 | 10.20.30.40 | 015236433
0233654 | 122555 | 10.20.30.50 | 023365433
0789456 | 332211 | 10.20.30.40 | 078945633
1234567 | 225522 | 10.20.30.50 | 123456733
0321654 | 999999 | 10.20.30.40 | 032165433
0456123 | 777899 | 10.20.30.40 | 045612333
***
***
***

Preciso ter a seguinte saída no 2.txt como mostrado:

0152364 | 134444 | 10.20.30.40 | 015236433
0233654 | 122555 | 10.20.30.50 | 023365433
# 0789456 | 332211 | 10.20.30.40 | 078945633
# 1234567 | 225522 | 10.20.30.50 | 123456733
# 0321654 | 999999 | 10.20.30.40 | 032165433
# 0456123 | 777899 | 10.20.30.40 | 045612333
***
***
***

O correto é script que escrevi

para i em `cat 1.txt | cut-d" | "-f3`
fazer
gato 2.txt |sed "s / ^ \ (.* \ | $ i \ |.*)/# \ 1 / g"> tmp.txt
mv tmp.txt 2.txt
feito

Mas o script acima irá comentar todas as ocorrências.

Sua ajuda é muito apreciada.

Obrigado
-IMAS
  #4 (permalink)  
Old 10-13-2008
summer_cherry summer_cherry is offline Forum Advisor  
Usuário
  
 

Join Date: Jun 2007
Localização: Beijing China
Mensagens: 1.092
awk:


Código:
nawk 'BEGIN{FS="|"}
{
if(NR==FNR)
	a[$3]=0
else
{
	a[$3]++
	if(a[$3]>=2)
		print "#"$0
	else
		print $0
}
}' 1.txt 2.txt

  #5 (permalink)  
Old 10-13-2008
IMAS imas is offline
Usuário
  
 

Join Date: Nov 2007
Lugares: 15
Oi Summer_Cherry,

Milhões de agradecimentos por me dar o pedaço de código que vai comentar a partir de segunda ocorrência de correspondência padrão a partir do início da linha.

intelsol2> cat 1.txt
0152364 | 134444 | 10.20.30.40 | 015236433
0233654 | 122555 | 10.20.30.50 | 023365433
intelsol2> gato 2.txt
0152364 | 134444 | 10.20.30.40 | 015236433
0233654 | 122555 | 10.20.30.50 | 023365433
0789456 | 332211 | 10.20.30.40 | 078945633
1234567 | 225522 | 10.20.30.50 | 123456733
0321654 | 999999 | 10.20.30.40 | 032165433
0456123 | 777899 | 10.20.30.40 | 045612333
intelsol2>
nawk 'BEGIN (FS \u003d"|"}
(
if (NR \u003d\u003d FNR)
um [$ 3] \u003d 0
diferente
(
um [$ 3] + +
if (um [$ 3]> \u003d 2)
print "#" $ 0
diferente
print $ 0
)
) '1.txt 2.txt> 3.txt
intelsol2> gato 3.txt
0152364 | 134444 | 10.20.30.40 | 015236433
0233654 | 122555 | 10.20.30.50 | 023365433
# 0789456 | 332211 | 10.20.30.40 | 078945633
# 1234567 | 225522 | 10.20.30.50 | 123456733
# 0321654 | 999999 | 10.20.30.40 | 032165433
# 0456123 | 777899 | 10.20.30.40 | 045612333
intelsol2>

Além disso, graças um lote para unix fórum caras "você ppl rock!"

FYI, eu estava a tentar procurar por esse código uma vez que todos os fins de semana e passou por sed manual "http://www.grymoire.com/Unix/Sed. html "sub-tópico (/ 1, / 2, etc especificar quais ocorrência) porém foi infeliz na tentativa todo o método de tentativa e erro.

Verão também poderia explicar-me o código que você tenha escrito para que eu possa compreendê-la em uma maneira melhor.

Mais uma vez um agradecimento muito e você pode fechar esta discussão.

Obrigado
-IMAS
Closed Thread

Marcadores

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 02:42.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0