The UNIX and Linux Forums  
Hei og Velkommen fra USA til UNIX og Linux Forums! Takk for besøket og Delta i vårt globale samfunn.

Go Back   UNIX og Linux Forums > Top Forums > Shell programmering og Skripting
.
google unix.com



Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her.

Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
Ikke i stand til å sette inn data via crontab megh Sun Solaris 2 12-29-2008 08:36
Ikke i stand til å sette inn data megh Sun Solaris 1 12-05-2008 12:20
ikke Sett inn data fra. dat filen til. xls Kan noen hjelpe meg kreddy2003 Shell programmering og Skripting 1 05-28-2008 06:33
hjelpe meg til å sette inn data babu @ shell UNIX for Dummies Spørsmål og svar 10 10-24-2006 03:25
sed, sette inn data fra en fil til en annen? ctcuser Shell programmering og Skripting 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 Søk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 03-17-2009
aemunathan aemunathan is offline
Registrert bruker
  
 

Bli Dato: mai 2008
Innlegg: 75
Hvordan sette inn data befor noen feltet i en rad med data avhengig opp verdier i raden

Hei

Jeg trenger å gjøre noen ting som "finne og sette før at" i en fil som inneholder mange poster. Dette vil være klare med følgende eksempel.

Den opprinnelige dataene posten bør være noen ting som dette
Code:
60119827  RTMS_LOCATION_CDR    INSTANT_POSITION_QUERY    1236574686123083rtmssrv7      20090309102806279           441           442
           783           WEB       1568          GMLC919443259137    FAILURE6         1236574665595654lessrv1
men på grunn av en systemfeil filen genereres har en manglende informasjon, og det ser ut som

Code:
60119827  RTMS_LOCATION_CDR    INSTANT_POSITION_QUERY    1236574686123083rtmssrv7      20090309102806279                         442
           783           WEB       1568          GMLC919443259137    FAILURE6         1236574665595654lessrv1
begge har 248 charaters lengde. men i den andre posten en data mangler dvs. 441

Jeg trenger å sette inn 441 akkurat i denne stillingen hvis 442 er tilgjengelig som neste data.
sin noe slikt tilfelle utsagn ...

Jeg skal ha forskjellige verdier i stedet for 442 og tilhørende tidligere data om posisjon

Hvordan går om dette ... alle ettall hjelpe meg ut ...
Am ha masse feil filer som dette skal behandles, kan derfor jeg gjøre noe lignende laste opp i en DB og sette inn data basert på verdiene i raden ved posisjonen jeg sa før (442)

Hjelp meg!
  #2 (permalink)  
Old 03-17-2009
vgersh99's Avatar
vgersh99 vgersh99 is offline Forum Staff  
Moderator
  
 

Bli Date: Feb 2005
Sted: Boston, MA
Innlegg: 5122
Sitat:
Originally Posted by aemunathan
Jeg skal ha forskjellige verdier i stedet for 442 og tilhørende tidligere data om posisjon
Hvordan vil du vite hvor NØYAKTIG å sette inn de manglende "data"?
Hvordan vet du at det mangler '441 'bør omslutte av n mellomrom / kategoriene til venstre og m mellomrom / fanene til høyre?
  #3 (permalink)  
Old 03-17-2009
dariyoosh's Avatar
dariyoosh dariyoosh is offline
Registrert bruker
  
 

Bli Date: Mar 2009
Beliggenhet: Iran (Teheran)
Innlegg: 44
Hei,

Som det ble sagt, du virkelig trenger å definere et mønster / struktur for arkiv inkludert nøyaktig feltet tallene der data skal endres eller i det minste en gruppe av bestemte verdier i henhold til hvilke manuset har å søke filen og legge til hva som mangler.

Bare for å gi deg en første idé, hvis verdier er 441 og 442, så kan følgende KornShell skriptet vil gjøre jobben

Code:
#!/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
Så hvis det er flere verdier, kan du angi dem i for løkke.

Men dette fungerer bare hvis den skilletegn i filen er standardverdiene for IFS som er, \ n \ t og ''.

Hilsen,
  #4 (permalink)  
Old 03-18-2009
aemunathan aemunathan is offline
Registrert bruker
  
 

Bli Dato: mai 2008
Innlegg: 75
Hei
hvor jeg kan nevne filnavnet til å lese linjene fra ... i ur script.
  #5 (permalink)  
Old 03-18-2009
dariyoosh's Avatar
dariyoosh dariyoosh is offline
Registrert bruker
  
 

Bli Date: Mar 2009
Beliggenhet: Iran (Teheran)
Innlegg: 44
Sitat:
Originally Posted by aemunathan View Post
Hei
hvor jeg kan nevne filnavnet til å lese linjene fra ... i ur script.
Tydeligvis på kommandolinjen, for eksempel hvis skriptet filnavnet er myscript.ksh og filen heter myfile du skriver:

$. / Myscript.ksh myfile
  #6 (permalink)  
Old 03-18-2009
aemunathan aemunathan is offline
Registrert bruker
  
 

Bli Dato: mai 2008
Innlegg: 75
Hei

Den fungerer, men det er omstillingen i dataene mellomrom.

Eksisterende data stillingene bør ikke bli forstyrret, og antall tegn 248 bør opprettholdes i resultatet også

Det blir tomt mellomrom på slutten av hver linje og mellom data i tillegg. den tomme plassen indiactes det er ingen data for dette feltet.

Egentlig er det enkelte felt navn som rapportene er generert, hvis dette feltet ikke er tilgjengelig i rapporten vil det være mellomrom for å nevne det.

Jeg trenger å opprettholde lengden 248 tegn. Siden denne filen vil bli sendt for formatering til ulike format i en annen server. Slik at data skal være intakt.

det må være 11 tomt mellomrom etter tidsstempelet: 20090309102806279
Etter det jeg må sette inn 441 hvis 442 er til stede.
  #7 (permalink)  
Old 03-18-2009
Goldorakk's Avatar
Goldorakk Goldorakk is offline
Registrert bruker
  
 

Bli Date: Feb 2009
Sted: Frankrike
Innlegg: 43
Det er veldig vanskelig i skriptet skallet å manipulere linje med mellomrom ... Prøv denne koden og starte det slik:. / Myscript infile outfile

Anta verdi 441/442 på posisjonene 116 og 130.
Hvis noen linjer inneholder et # tegn, endre det i manuset med en annen ikke-brukt karakter.

Code:
#!/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

Hugseliste

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er




Alle klokkeslett er GMT -4. Nå er klokken 10:28.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0