[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Duvida AWK
From: |
jimmy |
Subject: |
Re: [shell-script] Duvida AWK |
Date: |
Wed, 26 Jan 2011 21:48:35 -0200 |
User-agent: |
Mutt/1.4.2.3i |
On Wed, Jan 26, 2011 at 02:45:08PM -0000, fsilva6 wrote:
>
> Estou precisando montar um AWK que faça o seguinte:
>
> tenho o arquivo:
> 1 a
> 2 b
> 3 c
> 4 d
> 4 d
> 5 e
>
> preciso gerar dois arquivos
>
> Arq1 -
> 1 a
> 2 b
> 3 c
> 5 e
>
> Arq2 -
> 4 d
> 4 d
Até aqui eu entendi que para "Arq1" vão os registros únicos e para
"Arq2" irão os duplicados.
>
> abaixo o awk que estou já montei e não está rodando.
Este script está incompleto até para tentar testar.
> V_ID_CONTA =SUBSTR(LINHA, 1,15)
> V_NUM_CONTA =SUBSTR(LINHA,16, 100)
"SUBSTR" não é uma função do awk, ou você definiu uma função com este
nome em algum lugar, ou há um erro tipográfico aqui.
Outra coisa, os offsets usados nessas expressões sugerem dados bem
diferentes do exemplo mostrado, a não ser que existam vários espaços em
branco entre os dados e o cliente de e-mail truncou esses espaços. Se
for esse segundo caso, pode ignorar essa observação.
> V_ID_CONTA_ANT = ""
> V_NUM_CONTA_ANT = ""
> V_LINHA_ANT = ""
> CONTADOR = 1
>
> if ( V_ID_CONTA != V_ID_CONTA_ANT && V_NUM_CONTA != V_NUM_CONTA_ANT ){
>
> V_ID_CONTA_ANT = V_ID_CONTA
> V_NUM_CONTA_ANT = V_NUM_CONTA
> V_LINHA_ANT=$0
>
> if ( CONTADOR >= 2){
>
> if ( CONTADOR == 2){
>
> print V_LINHA_ANT >> AT
> print $0 >> AT
Você fez uso de uma variável AT aqui, mas em nenhum lugar desse script
ela é definida com algum valor.
>
> }else{
>
> print $0 >> AT
>
> }
>
> }
>
> CONTADOR++
>
> } else {
>
> if ( CONTADOR == 1){
>
> print V_LINHA_ANT >> AT
> print $0 >> AT
>
> }else{
>
> print $0 >> AR
>
> }
>
> }
Tente formular um caso de teste melhor para o seu problema e tente
corrigir os problemas do seu script, com certeza o compilador está
avisando sobre vários erros e você precisa levá-los em consideração.
Como última observação, se seu arquivo couber na memória, será muito
mais simples fazer isso usando arrays associativos.
--
"Não manejo bem as palavras
Mas manipulo bem as strings."
------------------------------