![]() |
|
|
google unix.com
|
|||||||
| Fóruns | Registar | Fórum Regimento | Ligações | Álbuns | FAQ | Lista deputados | Calendário | Pesquisa | Today's Posts | Mark Forums Read |
| 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 |
![]() |
|
|
Linkback | Thread Tools | Pesquisar este Thread | Rate Thread | Display Modes |
|
|
|
||||
|
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 " |
|
||||
|
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" |
|
||||
|
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
|
|
||||
|
Citação:
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
|
|
||||
|
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.. |
![]() |
| Marcadores |
| Thread Tools | Pesquisar este Thread |
| Display Modes | Esta taxa Thread |
|
|