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
urgente ajudar: querer verificar os dados no oráculo de flate arquivo unknown123 Programação Shell Script e 3 05-18-2009 06:36
como converter o resultado da consulta para selecionar os dados separados por vírgulas - urgente pls Hemamalini Programação Shell Script e 1 06-16-2008 05:27
formatação de disco rígido (lavagem) Jamiee Sun Solaris 0 06-12-2008 08:48
Ajuda a substituição ou esfregando caracteres unicode roninuta Programação Shell Script e 3 01-21-2008 11:39
[necessidade urgente de ajuda] comparar os dados Bucci Programação Shell Script e 2 02-27-2007 11:27

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 05-26-2009
padhu.47 padhu.47 is offline
Usuário
  
 

Join Date: Apr 2008
Posts: 4
Post URGENTE: - Dados "Scrubbing

Todas oi,

Tenho um flat (qualquer delimitação) de milhões de linhas de dados, onde, em que tenho a scrubb os dados da linha a partir da posição ($ 1) dada no parâmetro de entrada até o comprimento ($ 2), em dado do parâmetro de entrada. Eu utilizada awk, sed mas sou incapaz de o fazer.

esfrega-chave - 12345 deverá ser substituído por 67.890
Ex.: 01289 - antes de esfregar
06789 - após a lavagem


exemplo: sample.ksh 6 4



Entrada - Flatfile:
-------
"1234,5678, 0987,12345667,000000976655, +1234,013994878356 "
"0987,23467,11243554,0000887651,1234567,09876,1234455 "
"0987675,1223443,797784784784,09866545, +232322,097865 "

Quero que a produção limpa como arquivo como abaixo:

"1234,0678, 0987,12345667,000000976655, +1234,013994878356 "
"0987,78967,11243554,0000887651,1234567,09876,1234455 "
"0987675,6778443,797784784784,09866545, +232322,097865 "
  #2 (permalink)  
Old 05-26-2009
ghostdog74 ghostdog74 is offline Forum Advisor  
Usuário
  
 

Join Date: Sep 2006
Posts: 2.556
se você tiver o Python

Código:
#!/usr/bin/env python
import string
FROM="12345"
TO="67890"
table=string.maketrans(FROM,TO)
for line in open("file"):
    line=line.strip().split(",")
    line[1]=line[1][:4].translate(table) + ''.join(line[1][4:])
    print ','.join(line)

saída

Código:
# python test.py
"1234,0678,0987,12345667,000000976655,+1234,013994878356"
"0987,78967,11243554,0000887651,1234567,09876,1234455"
"0987675,6778443,797784784784,09866545,+232322,097865"

  #3 (permalink)  
Old 05-26-2009
summer_cherry summer_cherry is offline Forum Advisor  
Usuário
  
 

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

Código:
sub scrub{
	my($pos,$len)=(@_);
	while(<DATA>){
		substr($_,$pos-1,$len) =~ y/12345/67890/;
		print $_;
	}
}
scrub(6,3);
__DATA__
1234,5678,0987,12345667,000000976655,+1234,013994878356
0987,23467,11243554,0000887651,1234567,09876,1234455
0987,1223443,797784784784,09866545,+232322,097865

  #4 (permalink)  
Old 05-26-2009
padhu.47 padhu.47 is offline
Usuário
  
 

Join Date: Apr 2008
Posts: 4
URGENTE: - Dados esfregando

Todas oi, obrigado pela resposta ....
i dont ter python ou perl ....
Tenho apenas ksh, bash, sh, csh

por favor me ajude
  #5 (permalink)  
Old 05-26-2009
Neo's Avatar
Neo Neo is offline Forum Staff  
Administrador
  
 

Join Date: Sep 2000
Localização: Ásia e Pacífico
Mensagens: 6.804
Citação:
Originally Posted by padhu.47 View Post
Todas oi, obrigado pela resposta ....
i dont ter python ou perl ....
Tenho apenas ksh, bash, sh, csh

por favor me ajude
Melhor para instalar PERL ou Python. É gratuito e fácil de instalar.
  #6 (permalink)  
Old 05-26-2009
ghostdog74 ghostdog74 is offline Forum Advisor  
Usuário
  
 

Join Date: Sep 2006
Posts: 2.556
Citação:
Originally Posted by padhu.47 View Post
Todas oi, obrigado pela resposta ....
i dont ter python ou perl ....
Tenho apenas ksh, bash, sh, csh

por favor me ajude
então usar awk

Código:
awk -F"," 'BEGIN{
 t["1"]="6"
 t["2"]="7"
 t["3"]="8"
 t["4"]="9"
 t["5"]="0" 
}
{
 s=""
 for(i=1;i<=4;i++){
  if( substr($2,i,1) in t ){
     s=s t[substr($2,i,1)]
  }else{
     s=s substr($2,i,1)
  }   
 }
 $2=s substr($2,5)
}
1
' OFS="," file

  #7 (permalink)  
Old 05-27-2009
padhu.47 padhu.47 is offline
Usuário
  
 

Join Date: Apr 2008
Posts: 4
URGENTE: - Dados "Scrubbing

o código acima não está funcionando .....
por favor ajudem-me por escrito, esse código no ksh, CSH, SH ....

----- ----- Post Update

Olá rapazes,

Eu escrevi um awk prog ... como abaixo para fazê-lo. mas a sua fazendo para todos os números dentro do Flatfile.

Código #:
#! / usr / bin / awk-f
BEGIN (
CnvFrom \u003d "0123456789";
CnvTo \u003d "4590382617";

Campo \u003d 1;
)
(
Newfield \u003d ""
for (i \u003d 1, i <\u003d length ($ Campo); i + +) (
char \u003d substr ($ Campo, i, 1);
if (pos \u003d índice (CnvFrom, char))
char \u003d substr (CnvTo, pos, 1)
Newfield \u003d char Newfield
)
$ Campo \u003d Newfield
imprimir
)


Mas a minha requirment é a mudança / traduzir os valores da posição (de parâmetro de entrada - $ 2) e comprimento (de parâmetro de entrada - $ 3) para a Flatfile mencionado em um diretório (parâmetro de entrada - $ 1). por favor me ajude ....

por exemplo: scrub.ksh ficheiro1 68 9 ($ 1 - filename, $ 2-postion (68), $ 3 - lenth partir da posição (9))

Antes esfrega-ficheiro1:
---------------------
"37713000000", "12000000202", "0000000000000000000007102", "0000377310013683931", 20090114,20080301,20080331,20060304, 000000000005897."
"37713000000", "12000000202", "0000000000000000000007102", "0000377310013683931", 20090114,20080301,20080331,20060304, 000000000005897."
"37713000000", "12000000202", "0000000000000000000010739", "0000377310044493243", 20090114,20080501,20080531,20070224, 000000000000000."
"37713000000", "12000000202", "0000000000000000000010739", "0000377311018365607", 20090114,20080401,20080430,20070224"


Depois esfrega-ficheiro1:
-----------------

"37713000000", "12000000202", "0000000000000000000007102", "0000377310450210705", 20090114,20080301,20080331,20060304, 000000000005897."
"37713000000", "12000000202", "0000000000000000000007102", "0000377310450210705", 20090114,20080301,20080331,20060304, 000000000005897."
"37713000000", "12000000202", "0000000000000000000010739", "0000377310433370930", 20090114,20080501,20080531,20070224, 000000000000000."
"37713000000", "12000000202", "0000000000000000000010739", "0000377311451028246", 20090114,20080401,20080430,20070224"

por favor me ajude ..... Eu quero o matagal por enquanto os parâmetros de entrada .....
please help ....

Última edição por padhu.47; em 05/27/2009 05:43..
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 11:38.


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