![]() |
|
|
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 |
| Arquivo conversão | gehlnar | Programação Shell Script e | 4 | 04-17-2009 08:47 |
| Conversão de ficheiros | sridhar_423 | Programação Shell Script e | 2 | 03-16-2009 04:47 |
| Arquivo conversão para ascii | Mora | UNIX & avançada para usuários experientes | 4 | 03-31-2008 01:29 |
| Conversão utilitário xhtml arquivo para arquivo PostScript | dattatray.b | Sun Solaris | 0 | 08-25-2005 07:36 |
| arquivo conversão | hipo | UNIX para Dummies Perguntas & Respostas | 1 | 07-24-2001 10:24 |
![]() |
|
|
Linkback | Thread Tools | Pesquisar este Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Arquivo conversão e awk
Oi Pessoal, Estou confuso com a saída do arquivo de entrada e estou usando comando no script abaixo para obter o resultado esperado. Também gostaria de acrescentar outra condição usando lógica AND (&) em lugar de US $ 2 \u003d\u003d "L" ($ 4 \u003d 0 - $ 4) como $ 2 \u003d\u003d "L" & & $ 3 \u003d\u003d "L" ($ 4 \u003d 0 - $ 4) mas estou recebendo alguns awk erro. Pode alguém por favor avise sobre este por favor? Código:
cat $FILENAME |grep "^PL"|tr -d '\015'|sort -k1,2|nawk -F'|' 'BEGIN {OFS="~"}$2=="L"{$4=0-$4};$6=="COM"?$6="SHS":$6="FMT";{arr[$1"~"$5"~"$6]+=$4} END {for (i in arr) {print i,arr[i]}}'>$TEMPFILE
Input File
============
ISIN|BL|STATUS|QTY|SNAME|CLASS
PLKGHM000017|B|L|85000|KGHM|COM
PLPKO0000016|B|L|310000|PKO S.A.|COM
|B|L|0||
PLKGHM000017|L|L|35000|KGHM|COM
PL0000101937|B|L|100000|DS1110|GOV
|L|L|0||
PLKGHM000017|L|L|40000|KGHM|COM
PLPKO0000016|L|L|290000|PKO S.A.|COM
Present Output
==============
PL0000101937~B~L~100000~DS1110~FMT
PLKGHM000017~B~L~85000~KGHM~SHS
PLKGHM000017~L~L~-35000~KGHM~SHS
PLKGHM000017~L~L~-40000~KGHM~SHS
PLPKO0000016~B~L~310000~PKO S.A.~SHS
PLPKO0000016~L~L~-290000~PKO S.A.~SHS
PLPKO0000016~PKO S.A.~SHS~20000
PL0000101937~DS1110~FMT~100000
PLKGHM000017~KGHM~SHS~10000
Expected Output
==============
PLPKO0000016~PKO S.A.~SHS~20000
PL0000101937~DS1110~FMT~100000
PLKGHM000017~KGHM~SHS~10000
|
|
||||
|
Citação:
felicidades, Devaraj Takhellambam |
|
||||
|
Oi,
Esta é a saída esperada. Saída esperada \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d PKO SA PLPKO0000016 ~ ~ ~ 20000 SHS PL0000101937 ~ DS1110 FMT ~ ~ 100.000 PLKGHM000017 ~ ~ KGHM SHS ~ 10000 Mas se você ver o meu post original, mas estou ficando esta, juntamente com alguns outros registros. Por favor, deixe-me saber se você tem mais dúvida sobre isso. Felicidades, gehlnar |
|
||||
|
Graças Vgersh, tenho o código correto como por seu aconselhar. Estou recebendo esperada saída Se eu usar awk operação por duas vezes, ou seja, armazenar o produto antes de array operação e no novo arquivo se eu usar array operação Estou recebendo saída correta. Mas como eu estava usando awk, duas vezes, pensei em sua combinação. Será que algo parecido com tubo em awk? Então vai ser como primeiro obter este ficheiro .. Código:
PL0000101937~B~L~100000~DS1110~FMT PLKGHM000017~B~L~85000~KGHM~SHS PLKGHM000017~L~L~-35000~KGHM~SHS PLKGHM000017~L~L~-40000~KGHM~SHS PLPKO0000016~B~L~310000~PKO S.A.~SHS PLPKO0000016~L~L~-290000~PKO S.A.~SHS e, em seguida, executar matriz sobre esta operação de cálculo, mas a minha pergunta é esta não pode ser feito usando uma awk operação. |
|
||||
|
vgersh, Etapa 1: Conversão de ficheiros para a base inicial cálculo Código:
cat INPUTFILE |tr -d '\015'|sort -k1,2|nawk -F'|'
'BEGIN {OFS="~"}!/^PL/{next}$2=="L" && $3=="L"
{$4=0-$4};$6=="COM"?$6="SHS":$6="FMT"{print $0}'>TEMPFILE
Passo 2: cálculo real para obter resultados esperados usando acima da saída de TEMPFILE Código:
awk -F'~' '{OFS="~"}{arr[$1OFS$5OFS$6]+=$4} END
{for (i in arr) {print i,arr[i]}}'<TEMPFILE>EXPECTEDFILE
Eu estou usando duas etapas acima mencionadas, em um script, Esperança tens alguma idéia com ele e minha idéia foi a de combinar estes dois passos em um. Felicidades, gehlnar |
![]() |
| Marcadores |
| Thread Tools | Pesquisar este Thread |
| Display Modes | Esta taxa Thread |
|
|