The UNIX and Linux Forums  
Hallo und herzlich Willkommen aus den Vereinigten Staaten, die UNIX-und Linux-Foren! Vielen Dank für Ihren Besuch und die Teilnahme an unserem Global Community.

Go Back   Die UNIX-und Linux-Foren > Top Foren > Shell Programmierung und Scripting
.
Google unix.com



Shell Programmierung und Scripting Post Fragen zu ksh, csh, sh, bash, Perl, PHP, sed, awk und anderen Shell-Skripte und Shell-Scripting-Sprachen hier.

Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
Faden Thread Starter Forum Antworten Last Post
Nicht in der Lage, um Daten über crontab megh SUN Solaris 2 12-29-2008 08:36 AM
Nicht in der Lage, um Daten megh SUN Solaris 1 12-05-2008 12:20 AM
Legen Sie nicht in der Lage Daten aus. dat-Datei zu. xls kann jemand mir helfen kreddy2003 Shell Programmierung und Scripting 1 05-28-2008 06:33 AM
hilf mir auf, um Daten babu @ Shell UNIX for Dummies Questions & Answers 10 10-24-2006 03:25 AM
sed, fügen Sie Daten aus einer Datei in einen anderen? ctcuser Shell Programmierung und Scripting 4 05-03-2005 02:43 PM

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 Suche diesen Thread Rate Thread Anzeige-Modi
  #1 (permalink)  
Old 03-17-2009
aemunathan aemunathan is offline
Registrierte Nutzer
  
 

Registriert seit: Mai 2008
Beiträge: 75
Wie Daten vor, um ein Feld in eine Reihe von Daten, je auf Werte in der Zeile

Hi

Ich muss etwas tun, was wie "finden, und legen Sie vor, dass" in eine Datei, die viele Datensätze enthält. Dies wird deutlich, mit dem folgenden Beispiel.

Der ursprüngliche Datensatz sollte eine gewisse etwas davon
Code:
60119827  RTMS_LOCATION_CDR    INSTANT_POSITION_QUERY    1236574686123083rtmssrv7      20090309102806279           441           442
           783           WEB       1568          GMLC919443259137    FAILURE6         1236574665595654lessrv1
aber wegen einigen Fehlern die Datei erzeugt hat einen fehlenden Informationen, und es sieht aus wie

Code:
60119827  RTMS_LOCATION_CDR    INSTANT_POSITION_QUERY    1236574686123083rtmssrv7      20090309102806279                         442
           783           WEB       1568          GMLC919443259137    FAILURE6         1236574665595654lessrv1
beide hat 248 charaters Länge. doch in der zweiten Aufnahme ein Daten fehlen, dh 441

Ich brauche, um 441 genau in dieser Position, wenn 442 ist als nächste Daten.
seine Sache, wie bei einigen Erklärungen ...

Ich werde mit unterschiedlichen Werten von 442 und die entsprechenden Daten zurück

Wie gehen Sie dazu eine ... help me out ...
Am mit viel Fehlerdateien davon zu behandeln, daher kann ich tun, wie in einer DB-Upload-Datei und fügen Sie Daten auf der Grundlage der Werte in der Zeile auf dem Standpunkt, den ich bereits gesagt (442)

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

Join Date: Feb 2005
Ort: Boston, MA
Posts: 5122
Zitat:
Zitat von aemunathan
Ich werde mit unterschiedlichen Werten von 442 und die entsprechenden Daten zurück
Wie würden Sie wissen, wo genau, um die fehlenden Daten "?
Wie Sie wissen, dass die fehlenden'441 'sollte durch Surround-n Leerzeichen / Tabs auf der linken Seite und m Leerzeichen / Tabs auf der rechten Seite?
  #3 (permalink)  
Old 03-17-2009
dariyoosh's Avatar
dariyoosh dariyoosh is offline
Registrierte Nutzer
  
 

Join Date: März 2009
Ort: Iran (Teheran)
Beiträge: 44
Hallo gibt,

Da hieß es, man muss sich eine Muster-Struktur für Ihre Datei mit den genauen Zahlen Bereich, wo sich die Angaben soll geändert werden, oder zumindest eine Gruppe von bestimmten Werten, nach denen das Skript hat, um die Datei und fügen Sie was fehlt.

Nur für die Ihnen einen ersten Eindruck, wenn die spezifischen Werte sind 441 und 442, dann die folgenden KornShell-Skript wird die Arbeit

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
Also, wenn es mehrere Werte, können Sie sie in der for-Schleife.

Doch dies funktioniert nur wenn das Trennzeichen in der Datei sind die Standardwerte für IFS ist, \ n \ t und ''.

Grüße,
  #4 (permalink)  
Old 03-18-2009
aemunathan aemunathan is offline
Registrierte Nutzer
  
 

Registriert seit: Mai 2008
Beiträge: 75
Hi
Wo kann ich erwähnen, die Datei-Namen, um die Zeilen aus ... in ur-Skript.
  #5 (permalink)  
Old 03-18-2009
dariyoosh's Avatar
dariyoosh dariyoosh is offline
Registrierte Nutzer
  
 

Join Date: März 2009
Ort: Iran (Teheran)
Beiträge: 44
Zitat:
Zitat von aemunathan View Post
Hi
Wo kann ich erwähnen, die Datei-Namen, um die Zeilen aus ... in ur-Skript.
Offensichtlich auf der Befehlszeile, zum Beispiel, wenn der Script-Datei ist myscript.ksh und Ihr Name dieser Datei myfile Sie schreiben:

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

Registriert seit: Mai 2008
Beiträge: 75
Hi

Ihre Arbeitsweise, aber es ist die Neuausrichtung in den Daten Abstand.

Die bestehenden Daten-Positionen sollten nicht gestört werden und die Anzahl der Zeichen 248 sollte beibehalten werden, das Ergebnis zu

Es werden Leerzeichen am Ende jeder Zeile und in der Daten als gut. der freie Raum indiactes gibt es keine Daten für diesen Bereich.

Tatsächlich gibt es einige Namen, mit denen die Berichte erzeugt werden, wenn dieser Bereich nicht zur Verfügung steht in dem Bericht wird es Leerzeichen zu erwähnen, dass.

Ich brauche, um die Länge 248 Zeichen. Da diese Datei wird für die Formatierung zu anderen Format in einem anderen Server. So Daten zu erhalten.

Es muss mit 11 Leerzeichen nach dem Timestamp: 20090309102806279
nach, die ich benötige, um die 441, wenn 442 ist.
  #7 (permalink)  
Old 03-18-2009
Goldorakk's Avatar
Goldorakk Goldorakk is offline
Registrierte Nutzer
  
 

Join Date: Feb 2009
Ort: Frankreich
Beiträge: 43
Es ist sehr schwierig, in Shell-Skript zu manipulieren Zeile mit Leerzeichen ... Versuchen Sie diesen Code und starten Sie es, wie:. / Myscript infile outfile

Nehmen Sie Wert auf 441/442 Positionen 116 und 130.
Wenn ein paar Zeilen mit einem #-Zeichen, ändern Sie es in das Skript mit einem anderen nicht-Zeichen verwendet werden.

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

Lesezeichen

Thread Tools Suche diesen Thread
Suche diesen Thread:

Erweiterte Suche
Anzeige-Modi Rate this thread
Rate this thread:

Forumregeln
Du möglicherweise nicht neue Themen
Du möglicherweise nicht nach Antworten
Du möglicherweise nicht post-Anlagen
Du möglicherweise nicht bearbeiten Sie Ihre Beiträge

BB-Code ist Auf
Smilies sind Auf
[IMG] Code Auf
HTML-Code ist Aus
Trackbacks sind Auf
Pingbacks sind Auf
Refbacks sind Auf




Alle Zeiten sind GMT -4. Es ist jetzt 09:00 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Ltd. Sprachliche Übersetzungen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Die UNIX-und Linux-Foren Content © Copyright 1993-2009. Alle Rechte Reserved.Ad Management von RedTyger

Content Relevant URLs durch vBSEO 3.2.0