![]() |
|
|
google unix.com
|
|||||||
| Fórumok | Regisztráció | Fórum Szabályok | Linkek | Albumok | GYIK | Tagok listája | Naptár | Keres | Mai hozzászólások | Megjelöl Fórumok Olvas |
| Shell programozás és Scripting Post kérdések KSH, CSH, SH, Bash, Perl, PHP, SED, AWK ÉS EGYÉB shell szkriptek és shell script nyelvek itt. |
Több, UNIX és Linux fórum témák Ön által talált Hasznos
|
||||
| Szál | Thread Starter | Fórum | Válaszok | Utolsó hozzászólás |
| Nem tudja beszúrni adatok crontab | megh | SUN Solaris | 2 | 12-29-2008 08:36 AM |
| Nem tudja beszúrni adatok | megh | SUN Solaris | 1 | 12-05-2008 12:20 AM |
| képtelen Beszúr adatokat. dat file. xls tud valaki segítsen nekem | kreddy2003 | Shell programozás és Scripting | 1 | 05-28-2008 06:33 AM |
| segítsen nekem, hogy iktathatják adatok | Babu @ héj | A UNIX a dummies Kérdések és válaszok | 10 | 10-24-2006 03:25 AM |
| sed szúrja adatok egy fájlt a másik? | ctcuser | Shell programozás és Scripting | 4 | 05-03-2005 02:43 PM |
![]() |
|
|
LinkBack | Téma eszközök | Keresés a téma | Rate Thread | Megjelenítési módok |
|
|
|
||||
|
Hogyan lehet beszúrni adatokat befor néhány területen a sorban az adatok függvényében nyomon értékek sora
Szia Kell tennem néhány dolgot, mint a "talál és helyezze előtt, hogy" a fájl, amely tartalmazza, sok rekordot. Ez egyértelmű a következő példa. Az eredeti adatokat nyilván kell néhány dolog, mint ez Kód:
60119827 RTMS_LOCATION_CDR INSTANT_POSITION_QUERY 1236574686123083rtmssrv7 20090309102806279 441 442
783 WEB 1568 GMLC919443259137 FAILURE6 1236574665595654lessrv1
esedékes, de némely rendszer hiba keletkezett a fájl már van egy hiányzó információnak, és úgy néz ki, Kód:
60119827 RTMS_LOCATION_CDR INSTANT_POSITION_QUERY 1236574686123083rtmssrv7 20090309102806279 442
783 WEB 1568 GMLC919443259137 FAILURE6 1236574665595654lessrv1
mindkettőről van 248 charaters hosszát. de a második rekord egy adat hiányzik, azaz 441 vennem kell beilleszteni 441 pontosan ebben a helyzetben, ha 442 kapható a következő adatokat. Néhány dolog, mint az ügy kimutatások ... Én leszek, eltérő értékek helyett 442 és a hozzájuk tartozó korábbi álláspontját adatok How to go about this ... akármi egy segítsen nekem ki ... Am miután sok hiba fájlokat, például ezt kell kezelni, ezért tehetek ilyet feltölteni a DB és illessze be az adatok alapján az értékek a sorban a helyzetben azt mondtam előtt (442) Segítsen!! |
|
|||||
|
Hello there, Ahogy mondták, akkor tényleg meg kell határoznunk a minta összetételét a fájl, beleértve a pontos számok a területen, ahol adatokat kellene módosítani kell, vagy legalább egy csoportja különleges értékek, amelyek szerint a forgatókönyvet kell keresni a fájlt és a hozzá hogy mi hiányzik. Csak így Ön az első ötlet, ha a megadott értékek 441 és 442, akkor a következő KornShell szkript fogja végezni a munkát Kód:
#!/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
Tehát, ha van néhány érték, akkor meg azokat a for ciklus. Mégis, ez csak akkor megy, ha a határolók a fájlban vannak az alapértelmezett értékek IFS vagyis \ n \ t és a "". Üdvözlettel,
|
|
|||||
|
Idézet:
$. / Myscript.ksh myfile |
|
||||
|
Szia
Munkacsoportjai de van átszervezés az adatok távolságtól. A meglévő adatok pozíciók ne zavarják, és a karakterek száma 248 fenn kell tartani az eredményt is Nem lesz üres helyeket végén minden sor, és az adatok között is. Az üres tér indiactes nincs adat, hogy a területen. Valójában vannak olyan mezők nevét, amely a jelentések generálása, ha ez a mező nem áll rendelkezésre a jelentés nem lesz üres hely kell említenem, hogy. Én fenn kell tartani a hossza 248 karakter. Mivel ez a fájl fogja megkapni a formázás különböző formátumban másik szerverre. Így adatokat kell ép. kell lennie 11 üres helyek után a timestamp: 20090309102806279 aztán vennem kell szúrni a 441 ha 442 van jelen. |
|
|||||
|
Nagyon nehéz a shell script manipulálni összhangban a terek ... Próbáld ki ezt a kódot, és dob rajta, mint:. / Myscript bemenet kimenet Tegyük fel, hogy 441/442 pozíciók értéke 116 és 130. Ha néhány sor tartalmaz egy # karakterrel, változtassa meg a forgatókönyvet egy másik nem használt karaktert. Kód:
#!/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
|
![]() |
| Könyvjelzõk |
| Téma eszközök | Keresés a téma |
| Megjelenítési módok | Rate this thread |
|
|