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
Não é possível inserir dados através do crontab Megh Sun Solaris 2 12-29-2008 08:36
Não é possível inserir dados Megh Sun Solaris 1 12-05-2008 12:20
incapaz Inserir os dados de arquivo. dat para. xls alguém pode me ajudar kreddy2003 Programação Shell Script e 1 05-28-2008 06:33
para me ajudar a inserir dados Babu @ shell UNIX para Dummies Perguntas & Respostas 10 10-24-2006 03:25
sed, insira os dados de um arquivo para outro? ctcuser Programação Shell Script e 4 05-03-2005 02:43

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-17-2009
aemunathan aemunathan is offline
Usuário
  
 

Join Date: May 2008
Lugares: 75
Como inserir alguns dados antes da sua área em uma linha de dados em função de valores na linha

Oi

Eu preciso fazer alguma coisa como "encontrar e inserir antes que" em um arquivo que contém muitos registros. Isso será evidente com o seguinte exemplo.

Os dados originais registro deve ser alguma coisa como esta
Código:
60119827  RTMS_LOCATION_CDR    INSTANT_POSITION_QUERY    1236574686123083rtmssrv7      20090309102806279           441           442
           783           WEB       1568          GMLC919443259137    FAILURE6         1236574665595654lessrv1
mas devido a alguns erros de sistema no arquivo gerado tem uma informação ausente e que parece

Código:
60119827  RTMS_LOCATION_CDR    INSTANT_POSITION_QUERY    1236574686123083rtmssrv7      20090309102806279                         442
           783           WEB       1568          GMLC919443259137    FAILURE6         1236574665595654lessrv1
ambos tem 248 charaters comprimento. mas no segundo um registro de dados está faltando ou seja, 441

Preciso inserir 441 exatamente em que posição se 442 está disponível na próxima dados.
sua alguma coisa caso declarações ...

Vou ter valores diferentes, em vez de 442 e sua correspondente posição anterior dados

Como ir sobre isto ... qualquer um ajudar-me ...
Estou tendo muitos arquivos de erro como esta para ser tratada, e daí que eu posso fazer qualquer coisa como fazer upload de um PO e inserir os dados com base nos valores da linha na posição eu disse antes (442)

Ajuda-me para fora!
  #2 (permalink)  
Old 03-17-2009
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Moderador
  
 

Join Date: Feb 2005
Localização: Boston, MA
Mensagens: 5.122
Citação:
Originally Posted by aemunathan
Vou ter valores diferentes, em vez de 442 e sua correspondente posição anterior dados
Como você sabe onde exatamente para inserir a falta de dados'?
Como você sabe que a falta'441 'deve ser envolvente por n espaços / abas no lado esquerdo e espaços m / separadores à direita?
  #3 (permalink)  
Old 03-17-2009
dariyoosh's Avatar
dariyoosh dariyoosh is offline
Usuário
  
 

Join Date: Mar 2009
Localização: Irã (Tehran)
Lugares: 44
Olá,

Como foi dito, você realmente tem que definir um padrão / estrutura para o seu arquivo, incluindo os números exatos campo onde os dados são supostos para ser modificado ou, pelo menos, um grupo de valores específicos, segundo a qual o script tem de procurar o ficheiro e adicionar o que está faltando.

Só para lhe dar uma primeira ideia, se os valores específicos são 441 e 442 e, em seguida, a seguinte KornShell script irá fazer o trabalho

Código:
#!/bin/ksh

RESULT=""

while read LINE
do
    for ITERATOR in $LINE
    do
        if [[ $ITERATOR = "442"  ]]
        then
            RESULT="$RESULT 441 $ITERATOR"
        else
            RESULT="$RESULT $ITERATOR"
        fi
    done
    RESULT="$RESULT\n"
done < $1

print "$RESULT" > $1
Portanto, se há vários valores, você pode especificar-los no ciclo for.

No entanto, isso funciona se e somente se os delimitadores no seu arquivo são os valores padrão para IFS isto é, \ n \ t e ''.

Atenciosamente,
  #4 (permalink)  
Old 03-18-2009
aemunathan aemunathan is offline
Usuário
  
 

Join Date: May 2008
Lugares: 75
Oi
onde eu posso citar o nome do arquivo para ler as linhas de ... em ur script.
  #5 (permalink)  
Old 03-18-2009
dariyoosh's Avatar
dariyoosh dariyoosh is offline
Usuário
  
 

Join Date: Mar 2009
Localização: Irã (Tehran)
Lugares: 44
Citação:
Originally Posted by aemunathan View Post
Oi
onde eu posso citar o nome do arquivo para ler as linhas de ... em ur script.
É óbvio que na linha de comando, por exemplo, se o arquivo de script e seu nome é myscript.ksh nome do arquivo é myfile escrever:

$. / Myscript.ksh myfile
  #6 (permalink)  
Old 03-18-2009
aemunathan aemunathan is offline
Usuário
  
 

Join Date: May 2008
Lugares: 75
Oi

O seu trabalho, mas há realinhamento nos dados espaçamento.

Os dados existentes posições não deve ser perturbada e 248 o número de caracteres devem ser mantidas no resultado demasiado

Haverá espaços em branco no final de cada linha e, entre os dados tão bem. o espaço em branco indiactes não há dados para esse campo.

Na verdade, existem alguns nomes de domínio que os relatórios são gerados, se o campo não está disponível no relatório, haverá espaço para falar isso.

Preciso manter o comprimento 248 caracteres. Uma vez que este arquivo será enviado para a formatação formato diferente em outro servidor. Portanto, os dados tem que estar intacto.

Deve haver 11 espaços em branco após a hora: 20090309102806279
depois que eu preciso inserir o 441 se 442 está presente.
  #7 (permalink)  
Old 03-18-2009
Goldorakk's Avatar
Goldorakk Goldorakk is offline
Usuário
  
 

Join Date: Feb 2009
Local: França
Lugares: 43
É muito difícil, em shell script para manipular a linha com espaços ... Tente este código, e lançá-la como:. / Myscript infile OUTFILE

Assumir valor 441/442 em posições 116 e 130.
Se algumas linhas contém um caractere #, alterá-la no script com outro personagem não-utilizadas.

Código:
#!/bin/ksh

POS1=116 ; VAL1=441
POS2=130 ; VAL2=442

VAL_LEN=3

XPOS1=$((POS1 + $VAL_LEN - 1))
XPOS2=$((POS2 + $VAL_LEN - 1))

echo POS1=$POS1,XPOS1=$XPOS1
echo POS2=$POS2,XPOS2=$XPOS2

infile=$1
outfile=$2

NBL=$(wc -l $infile)
NBC=0

while [ $NBC -lt $NBL ]
do
        (( NBC = NBC + 1 ))

        xval1=$(head -$NBC $infile | tail -1 | cut -b$POS1-$XPOS1)
        xval2=$(head -$NBC $infile | tail -1 | cut -b$POS2-$XPOS2)

        if [ "$xval2" = "$VAL2" ]
        then
                if [ "$xval1" = "$VAL1" ]
                then
                        head -$NBC $infile | tail -1 >> $outfile
                else
                        # Must replace with $VAL1

                        echo "Must replace on line "$NBC

                        k1=$(head -$NBC $infile | tail -1 | sed 's/ /#/g')
                        (( ZPOS1 = POS1 - 1 ))
                        k2=$(echo $k1 | cut -b1-$ZPOS1)
                        (( ZPOS1 = XPOS1 + 1 ))
                        k3=$(echo $k1 | cut -b$ZPOS1-)
                        
                        echo "${k2}${VAL1}${k3}" | sed 's/#/ /g' >> $outfile
                fi
        else
                head -$NBC $infile | tail -1 >> $outfile
        fi
done
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 12:28.


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