The UNIX and Linux Forums  
Olá e boas-vindas de Estados Unidos para o UNIX e Linux Forum! Obrigado por visitar e fazer parte da nossa comunidade global.

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
Script extrair os dados incorrectos a partir de arquivo texto jermaine4ever Programação Shell Script e 6 03-16-2009 12:18
Login incorreto NEI? Juterassee Sun Solaris 5 10-30-2008 11:08
login incorreto espace1000 UNIX para Dummies Perguntas & Respostas 2 08-22-2008 06:48
Login incorreto sydney2008 Red Hat 6 08-22-2008 04:57
Nome Diretório Incorrect jand102821 UNIX para Dummies Perguntas & Respostas 1 06-19-2002 04:35

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 04-21-2009
pinnacle pinnacle is offline
Usuário
  
 

Join Date: Apr 2009
Lugares: 182
Awk dados incorretos.

Estou usando o seguinte comando:

Código:
nawk -F"," 'NR==FNR {a[$2$3]=$1;next} a[$2$3] {print a[$2$3],$1,$2,$3}'  file1 file2
Estou recebendo 40 registros de saída.
Mas quando eu ficheiro1 importação e ficheiro2 em MS Access i get 140 registros.
E sei que está correcta contagem 140.

Aprecie a sua ajuda em corrigir o script acima
  #2 (permalink)  
Old 04-21-2009
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Moderador
  
 

Join Date: Feb 2005
Localização: Boston, MA
Mensagens: 5.119
Seria definitivamente ajudar, se você tiver fornecido uma descrição mais detalhada do que você está tentando alcançar com a amostra de dados e arquivos a saída esperada.

A minha bola cristal é um pouco mais fluida, mas:
Código:
nawk -F"," 'NR==FNR {a[$2,$3]=$1;next} ($2 SUBSEP $3) in a {print a[$2,$3],$1,$2,$3}'  OFS=, file1 file2
  #3 (permalink)  
Old 04-21-2009
pinnacle pinnacle is offline
Usuário
  
 

Join Date: Apr 2009
Lugares: 182
Citação:
Originally Posted by vgersh99 View Post
Seria definitivamente ajudar, se você tiver fornecido uma descrição mais detalhada do que você está tentando alcançar com a amostra de dados e arquivos a saída esperada.

A minha bola cristal é um pouco mais fluida, mas:
Código:
nawk -F"," 'NR==FNR {a[$2,$3]=$1;next} ($2 SUBSEP $3) in a {print a[$2,$3],$1,$2,$3}'  OFS=, file1 file2
vgersh99

Tenho dois arquivos
$ Cabeça ficheiro1
zip, FirstName, LastName
07777, abc, def
22584, dez, DLO
25487, xyz, jkl
25488, dim, kio

$ Cabeça ficheiro2
objectivo servidor de dados
SSN, FirstName, LastName
123456789, abc, def
123456789, dez, DLO
123456789, xyz, jkl
123456789, dim, kio
queria Saída:
SSN, zip, FirstName, LastName

Código:
nawk -F"," 'NR==FNR {a[$2,$3]=$1;next} ($2 SUBSEP $3) in a {print a[$2,$3],$1,$2,$3}'  OFS=,  " file2 file1
40 Matches
Código:
nawk -F"," 'NR==FNR {a[$2,$3]=$1;next} ($2 SUBSEP $3) in a {print a[$2,$3],$1,$2,$3}'  OFS=,  " file1 file2
140 matches
140 jogos é correcto eu sei, mas ambos devem dar 140 i dont know why dando sua diferença.

Pode me explicar essa parte ($ 2 SUBSEP $ 3)
a [$ 2, $ 3] que estamos usando, aqui, porque a sua é separado por vírgula inputfile ou é regra geral
Se eu não uso, então também estou ficando mesmo resultado
  #4 (permalink)  
Old 04-21-2009
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Moderador
  
 

Join Date: Feb 2005
Localização: Boston, MA
Mensagens: 5.119
Citação:
Originally Posted by zenith View Post
vgersh99

Tenho dois arquivos
$ Cabeça ficheiro1
zip, FirstName, LastName
07777, abc, def
22584, dez, DLO
25487, xyz, jkl
25488, dim, kio

$ Cabeça ficheiro2
objectivo servidor de dados
SSN, FirstName, LastName
123456789, abc, def
123456789, dez, DLO
123456789, xyz, jkl
123456789, dim, kio
queria Saída:
SSN, zip, FirstName, LastName

Código:
nawk -F"," 'NR==FNR {a[$2,$3]=$1;next} ($2 SUBSEP $3) in a {print a[$2,$3],$1,$2,$3}'  OFS=,  " file2 file1
40 Matches
Código:
nawk -F"," 'NR==FNR {a[$2,$3]=$1;next} ($2 SUBSEP $3) in a {print a[$2,$3],$1,$2,$3}'  OFS=,  " file1 file2
140 matches
O acima de 2 invocações são exactamente os mesmos. Eu não entendo por que você está obtendo resultados diferentes.
Também eu não entendo porque você tem uma rasteira aspas duplas (em vermelho) em ambos os casos?
Citação:
Originally Posted by zenith
140 jogos é correcto eu sei, mas ambos devem dar 140 i dont know why dando sua diferença.

Pode me explicar essa parte ($ 2 SUBSEP $ 3)
a [$ 2, $ 3] que estamos usando, aqui, porque a sua é separado por vírgula inputfile ou é regra geral
Se eu não uso, então também estou ficando mesmo resultado
Não, não é porque o seu arquivo é separado por vírgula. Você pode construir sua matriz índice apenas por concatenar as cordas ($ 2 $ 3) ou (o que é melhor para o tratamento posterior), ao fazer isso:
Código:
a[$2,$3]
No contexto da matriz índice edifício, o "," é substituído pelo awk interna da variável SUBSEP. Se você decidir mais tarde sobre a "rachar" o índice (para encontrá-lo por partes), você pode dividir por SUBSEP. Se você simplesmente concatenar a string, não é possível reconstruir o índice para a sua peças originais.

A solução inicialmente destacados você deve dar o resultado desejado.
Dada ficheiro1:
Código:
zip,FirstName,Lastname
07777,abc,def
22584,dec,dlo
25487,xyz,jkl
25488,dim,kio
e ficheiro2:
Código:
SSN,Firstname,LastName
123456789,abc,def
123456789,dec,dlo
123456789,xyz,jkl
123456789,dim,kio
correndo:
Código:
nawk -F, 'NR==FNR {a[$2,$3]=$1;next} ($2 SUBSEP $3) in a {print a[$2,$3],$1,$2,$3}'  OFS=, file2 file1
Resultados em:
Código:
123456789,07777,abc,def
123456789,22584,dec,dlo
123456789,25487,xyz,jkl
123456789,25488,dim,kio
Verifique se o seu ficheiro1 e ficheiro2 - ver se estamos lá quaisquer discrepâncias e / ou espaços incorporados.

Além disso, este não é um fórum de seu primeiro lugares e tiver sido requerido no passado: por favor, utilize BB Código tags ao publicar os dados ou código amostras.
  #5 (permalink)  
Old 04-21-2009
pinnacle pinnacle is offline
Usuário
  
 

Join Date: Apr 2009
Lugares: 182
Citação:
Originally Posted by vgersh99 View Post
O acima de 2 invocações são exactamente os mesmos. Eu não entendo por que você está obtendo resultados diferentes.
Também eu não entendo porque você tem uma rasteira aspas duplas (em vermelho) em ambos os casos?

Não, não é porque o seu arquivo é separado por vírgula. Você pode construir sua matriz índice apenas por concatenar as cordas ($ 2 $ 3) ou (o que é melhor para o tratamento posterior), ao fazer isso:
Código:
a[$2,$3]
No contexto da matriz índice edifício, o "," é substituído pelo awk interna da variável SUBSEP. Se você decidir mais tarde sobre a "rachar" o índice (para encontrá-lo por partes), você pode dividir por SUBSEP. Se você simplesmente concatenar a string, não é possível reconstruir o índice para a sua peças originais.

A solução inicialmente destacados você deve dar o resultado desejado.
Dada ficheiro1:
Código:
zip,FirstName,Lastname
07777,abc,def
22584,dec,dlo
25487,xyz,jkl
25488,dim,kio
e ficheiro2:
Código:
SSN,Firstname,LastName
123456789,abc,def
123456789,dec,dlo
123456789,xyz,jkl
123456789,dim,kio
correndo:
Código:
nawk -F, 'NR==FNR {a[$2,$3]=$1;next} ($2 SUBSEP $3) in a {print a[$2,$3],$1,$2,$3}'  OFS=, file2 file1
Resultados em:
Código:
123456789,07777,abc,def
123456789,22584,dec,dlo
123456789,25487,xyz,jkl
123456789,25488,dim,kio
Verifique se o seu ficheiro1 e ficheiro2 - ver se estamos lá quaisquer discrepâncias e / ou espaços incorporados.

Além disso, este não é um fórum de seu primeiro lugares e tiver sido requerido no passado: por favor, utilize BB Código tags ao publicar os dados ou código amostras.
Código:
nawk -F"," 'NR==FNR {a[$2,$3]=$1;next} ($2 SUBSEP $3) in a {print a[$2,$3],$1,$2,$3}'  OFS=, file1 file2
No código acima, se eu trocar a posição ficheiro1 e fie2 então fico com resultados diferentes.
Eu não posso postar os arquivos devido a dados sensíveis.
Eu verificada visualmente os arquivos e não vejo caracteres especiais nem nada.
Existe um comando especial para verificar isso.

Aprecie a sua resposta.
  #6 (permalink)  
Old 04-22-2009
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Moderador
  
 

Join Date: Feb 2005
Localização: Boston, MA
Mensagens: 5.119
Citação:
Originally Posted by zenith View Post
Código:
nawk -F"," 'NR==FNR {a[$2,$3]=$1;next} ($2 SUBSEP $3) in a {print a[$2,$3],$1,$2,$3}'  OFS=, file1 file2
No código acima, se eu trocar a posição ficheiro1 e fie2 então fico com resultados diferentes.
Eu não posso postar os arquivos devido a dados sensíveis.
Eu verificada visualmente os arquivos e não vejo caracteres especiais nem nada.
Existe um comando especial para verificar isso.

Aprecie a sua resposta.
Paciente: Doutor, ele realmente dói quando eu faço aquele!
Médico: Então não faça aquele!

As posições dos ficheiros na linha de comando é importante para o mapeamento dos campos de um arquivo para o outro. Olhe para o seu arquivos de dados' campos - tentar ver a diferença e olhar o seu destacamento para o mapeamento inicial lógica.
Boa sorte.
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 08:45.


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