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
Sed Há uma solução para isto? racbern Programação Shell Script e 1 03-13-2008 11:31
necessidade solução para a criação de scripts kkc Programação Shell Script e 14 01-31-2008 09:17
Sol e backup solução Jshwon Sun Solaris 1 10-23-2007 01:54
Grep solução Amruta Pitkar Programação Shell Script e 3 05-03-2007 03:57
Linux como uma solução NAS? kjbaumann Linux 1 08-30-2006 01:09

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 03-06-2008
timj123 timj123 is offline
Usuário
  
 

Join Date: Jan 2008
Lugares: 80
Existe uma solução para este awk?

Estou escrevendo um script awk que reúne alguns dados de certas áreas. Eu precisava de uma solução awk para isso, porque vai tornar-se mais tarde uma função no script.

Tenho os seguintes dados que eu preciso de saída em uma única linha, mas abrange toda a gravar multilple linhas e os registos não são "juntos". Exemplo seria tom abaixo, gravar "tom" que se segue é, em 4 linhas diferentes, mas eu só preciso dos dados a partir de 2 linhas, eu também terão a mesma informação para pat, tim, e tad, ou quem mais tem um registro como o formato abaixo.

Código:
2008   fl01   LAC   2589   polk   doal
xx 2008q1 mx
     sect 25698541

     Sales 08 Dept group

        lead1    2008q1
        tom
        pat
        tim
        tad

        lead1  07q4   07q3   07q2   07q1   06q4   06q3   jan
        tom    0      96     0      3312   3624   0      312
        pat    0      17     0      0      30     0      30
        tim    357    03     04     25     3020   3120   20
        tad    1734   0      0      0      5213   5213   0

        lead1  feb    mar    apr    may    jun    jul    aug
        tom    0      96     0      0      0      0      0
        pat    0      17     0      0      0      0      0
        tim    357    23     5      7      8      14     70
        tad    1734   0      0      0      0      0      0

        lead1  sept   oct    nov    dec
        tom    0      0      460    92
        pat    0      0      240    0
        tim    0      21     1800   0
        tad    0      0      672    0

2008   fl01  LAC   2589    polk   doal
yy 2008q1 mx
     sect 2569852

     Sales 08 Dept group
Eu precisava de o seguinte resultado:

Código:
lead1   07q4    07q1    06q4    06q3    sept    oct     nov
tim	357	25	3020	3120	0	21	1800 
tad	1734	0	5213	5213	0	0	672
Existe uma solução para este awk?

thanks in advance, para isso, porque eu acho que isto é difícil.
  #2 (permalink)  
Old 03-11-2008
timj123 timj123 is offline
Usuário
  
 

Join Date: Jan 2008
Lugares: 80
Citação:
Originally Posted by timj123 View Post
Estou escrevendo um script awk que reúne alguns dados de certas áreas. Eu precisava de uma solução awk para isso, porque vai tornar-se mais tarde uma função no script.

Tenho os seguintes dados que eu preciso de saída em uma única linha, mas abrange toda a gravar multilple linhas e os registos não são "juntos". Exemplo seria tom abaixo, gravar "tom" que se segue é, em 4 linhas diferentes, mas eu só preciso dos dados a partir de 2 linhas, eu também terão a mesma informação para pat, tim, e tad, ou quem mais tem um registro como o formato abaixo.

Código:
2008   fl01   LAC   2589   polk   doal
xx 2008q1 mx
     sect 25698541

     Sales 08 Dept group

        lead1    2008q1
        tom
        pat
        tim
        tad

        lead1  07q4   07q3   07q2   07q1   06q4   06q3   jan
        tom    0      96     0      3312   3624   0      312
        pat    0      17     0      0      30     0      30
        tim    357    03     04     25     3020   3120   20
        tad    1734   0      0      0      5213   5213   0

        lead1  feb    mar    apr    may    jun    jul    aug
        tom    0      96     0      0      0      0      0
        pat    0      17     0      0      0      0      0
        tim    357    23     5      7      8      14     70
        tad    1734   0      0      0      0      0      0

        lead1  sept   oct    nov    dec
        tom    0      0      460    92
        pat    0      0      240    0
        tim    0      21     1800   0
        tad    0      0      672    0

2008   fl01  LAC   2589    polk   doal
yy 2008q1 mx
     sect 2569852

     Sales 08 Dept group
Eu precisava de o seguinte resultado:

Código:
lead1   07q4    07q1    06q4    06q3    sept    oct     nov
tim	357	25	3020	3120	0	21	1800 
tad	1734	0	5213	5213	0	0	672
Existe uma solução para este awk?

thanks in advance, para isso, porque eu acho que isto é difícil.
qualquer ajuda aí para isso, por favor?
  #3 (permalink)  
Old 03-12-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
viciado
  
 

Join Date: Jan 2007
Localização: Варна, България / Milano, Italia
Mensagens: 2.910
Código:
awk 'NR == 1 { print "lead1   07q4    07q1    06q4    06q3    sept    oct     nov" }
$1 ~ "^("users")$" && NF > 1 { 
x[$1]++
if (x[$1] == 1)
  p[$1] = sprintf ("%s\t%s\t%s\t%s\t%s", $1, $2, $5, $6, $7)
if (x[$1] == 3) {
  printf "%s\t%s\t%s\t%s\n", p[$1], $2, $3, $4 
 }
}' users="tim|tad" file
Você pode adicionar mais usuários no padrão: tim | tad | pat etc
Utilize nawk / ou usr/xpg4/bin/awk no Solaris.
  #4 (permalink)  
Old 03-13-2008
timj123 timj123 is offline
Usuário
  
 

Join Date: Jan 2008
Lugares: 80
Citação:
Originally Posted by radoulov View Post
Código:
awk 'NR == 1 { print "lead1   07q4    07q1    06q4    06q3    sept    oct     nov" }
$1 ~ "^("users")$" && NF > 1 { 
x[$1]++
if (x[$1] == 1)
  p[$1] = sprintf ("%s\t%s\t%s\t%s\t%s", $1, $2, $5, $6, $7)
if (x[$1] == 3) {
  printf "%s\t%s\t%s\t%s\n", p[$1], $2, $3, $4 
 }
}' users="tim|tad" file
Você pode adicionar mais usuários no padrão: tim | tad | pat etc
Utilize nawk / ou usr/xpg4/bin/awk no Solaris.
Isto funciona muito bem, eu realmente aprecio a ajuda sobre isso, mas o que se queria a soma, colunas 07q4 e 07q1 e, em seguida, colocar esse valor no fim do printf declaração? Tendo problemas com essa parte. Pode me ajudar?
  #5 (permalink)  
Old 03-13-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
viciado
  
 

Join Date: Jan 2007
Localização: Варна, България / Milano, Italia
Mensagens: 2.910
Código:
awk 'NR == 1 { print "lead1   07q4    07q1    06q4    06q3    sept    oct     nov     tot" }
$1 ~ "^("users")$" && NF > 1 { 
x[$1]++
if (x[$1] == 1) {
  p[$1] = sprintf ("%s\t%s\t%s\t%s\t%s", $1, $2, $5, $6, $7)
  t[$1] = $2 + $5
}
if (x[$1] == 3) {
  printf "%s\t%s\t%s\t%s\t%d\n", p[$1], $2, $3, $4, t[$1] 
 }
}' users="tim|tad" file
  #6 (permalink)  
Old 03-13-2008
timj123 timj123 is offline
Usuário
  
 

Join Date: Jan 2008
Lugares: 80
OK, agora me sinto idiota.
Obrigado novamente soo muito sobre como salvar-me de uma semana no valor de frustração.
Sei que preciso de olhar para questões como estas a partir de um ângulo diferente.
  #7 (permalink)  
Old 03-13-2008
aspect_p aspect_p is offline
Usuário
  
 

Join Date: Mar 2008
Lugares: 13
Citação:
Originally Posted by radoulov View Post
Código:
awk 'NR == 1 { print "lead1   07q4    07q1    06q4    06q3    sept    oct     nov     tot" }
$1 ~ "^("users")$" && NF > 1 { 
x[$1]++
if (x[$1] == 1) {
  p[$1] = sprintf ("%s\t%s\t%s\t%s\t%s", $1, $2, $5, $6, $7)
  t[$1] = $2 + $5
}
if (x[$1] == 3) {
  printf "%s\t%s\t%s\t%s\t%d\n", p[$1], $2, $3, $4, t[$1] 
 }
}' users="tim|tad" file
Podes ir um pouco mais longe na descrição dos métodos utilizados awk sobre o script, im desculpe incomodar, mas para ser uma coisa como isto pode ser um grande craque no meu arsenal de shell scripts.
Closed Thread

Marcadores

Tags
solaris

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:27.


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