Regisztráció Blogot indítok
Adatok
0sm

0 bejegyzést írt és 6 hozzászólása volt az általa látogatott blogokban.

Admin Szerkesztő Tag Vendég
Sok helyen olvashatjuk, hogy a UNIX filozófia mennyire praktikus: sok apró programot össze tudunk kapcsolni, mindegyik kis alkotóelem csak a saját maga feladatát tudja. Aki szereti a LEGO-t, az biztosan könnyen magáévá tudja tenni ezt a filozófiát. :) Ennek ellenére az emberek folyton…..
"Egy kis rendszerfelügyelet" jeligére gondoltam, közzéteszem ezt az apró egysoros szkriptet, amely sorokból oszlopokat gyárt.Probléma: IPSec VPN kapcsolatokat monitorozó rendszer nagy kieséseket mutat, közben a VPN-t termináló tűzfal szerint csak ezred- vagy tizedmásodperces…..
0sm 2016.06.07 15:33:04
Nah... csak összehoztam.
Ideírom a kódot, mert látom, nem megy neked sem és hátha van valami hozzám hasonló nemnormális. (tudom, hogy menne neked, csak nem érdekel... ;)
Szóval awk-kal oldottam meg... bár nem nagyon értek hozzá:

Megírja az első két taget, majd adott tagek esetén memóriába pakol, kisbetűsít, összehasonlít és ha arra érdemesnek találja az adatokat, kiír.
Egyszerű, mint a csapbakakálás.

Köszi a figyelmet!

BEGIN{
FS="<|>";
nr = 0;
}
/Document_Name/{ dname = $3; printf ("<?xml version=\"1.0\" encoding=\"ISO-8859-2\"?>\n<Document>\n <Document_Name>%s</Document_Name>", dname) }
/Document_Date/{ ddate = $3; printf ("\n <Document_Date>%s</Document_Date>", ddate) }
/Sorszam/ {
getline;
comment = $0;
}
/HN/{ name = $3; }
/HD1/{ d1 = $3; }
/HD2/{ d2 = $3; }
/HA/{ aes = $3; }
/HC/{ cy = $3; }
/HZ/{ zapp = $3; }
/MT/{ mte = $3; }
/MC/{ mc = $3; }
/Ld/{ ld = $3; }
/Lt/{ lt = $3; }
/Ll/{ ll = $3; }
/CdN/{ cdn = $3; gsub(" ","",cdn); }
/<\/DocumentData>/{
s1 = tolower(sprintf("%s", cmt));
gsub(" ","",s1);
s2 = tolower(sprintf(" <!-- %s: %s - %s - %s - %s -->", cardno, name, zip, city, address));
gsub(" ","",s2);
if ( s1 == s2 ) {
nr = nr + 1;
printf ("\n <DocumentData>\n <Header>\n <Sorszam>%s</Sorszam>\n%s\n <HN>%s</HN>\n <HD1>%s</HD1>\n <HD2>%s</HD2>\n <HA>%s</HA>\n <HC>%s</HC>\n <HZ>%s</HZ>\n <MT>%s</MT>\n <MC>%s<MC>\n </Header>\n <Letter>\n <Ld>%s</Ld>\n <LetterCity>Budapest</LetterCity>\n <CdN>%s</CdN>\n <TelNumber>-</TelNumber>\n <Lt>%s</Lt>\n <Ll>%s</Ll>\n </Letter>\n </DocumentData>", nr, cmt, name, d1, d2, aes, cy, zapp, mt, mc, ld, cdn, lt, ll);
}
#else if {
# s1 = "
#}
}
END{
printf ("\n</Document>\n");
}
0sm 2016.02.04 10:25:43
Szia Bagoj úr!
Segítségre van szükségem, mert nem tudom, mit kezdjek a problémámmal.
Kapok egy tonna ügyféladatot, amit javítani kell, mert eltérés mutatkozik az adat rögzítése pillanatában felvett adat a jelenlegivel. - tudom, hülyén hangzik, de ha tudnád, mi folyik itt...
Konkrétan:
Kapok csomó xml-t és egy listát. A lista tartalmazza azokat az adatokat, melyek az xml-ekben duplán fordulnak elő. Példa kedvéért legyen a duplikáció: AAAAAAAAA
Az xml-ben 22 sor tartalmaz minden ügyféladatot, de a hibásak duplikálva vannak az alábbi rendszer szerint:
<1>
<2>
<3></3>
<!-- AAAAAAAAA: BBBBBBB - CCCC - DDDDDDDDDDDD - EEEEEEEEEEEEE -->
<4>BBBBBBB</4>
<5></5>
<6></6>
<7>DDDDDDDDDDDD</7>
<8>EEEEEEEEEEEEE</8>
<9>CCCC</9>
<10>FFFFFFFFFFFFF</10>
<11>GGGGGGGGGGGGG</11>
</2>
<12>
<13>20150503</13>
<14>HHHHHHHHH</14>
<15>AAAAAAAAA</15>
<16>---</16>
<17>JJJJJJJJJJ</17>
<18>KKKKKKKKKK</18>
</12>
</1>
Ez a 22 sor még egyszer előfordul az xml-ben, mégpedig így:
<1>
<2>
<3></3>
<!-- AAAAAAAAA: BBBBBBB - CCCC - DDDDDDDDDDDD - EEEEEEEEEEEEE -->
<4>BBBBBBB</4>
<5></5>
<6></6>
<7>DDDDDDDDDDDD</7>
<8>EEEEEEEEEEEEE</8>
<9>MMMM</9>
<10>FFFFFFFFFFFFF</10>
<11>GGGGGGGGGGGGG</11>
</2>
<12>
<13>20150503</13>
<14>HHHHHHHHH</14>
<15>AAAAAAAAA</15>
<16>---</16>
<17>JJJJJJJJJJ</17>
<18>KKKKKKKKKK</18>
</12>
</1>

A <9>-es tag eltér, az egyiket az ügyfél dadogása során rögzítették (kb. úgy képzeld el, mint az egyszeri vájárt a lottószám sorsoláskor: a következő nyerőszám a hatos. Ja nem, a kilences.)
A kiemelt sor <!-- mindkét 22-es blokkban tartalmazza a helyes adatokat, ami a példában a CCCC
Az első blokk a helyes: <9>CCCC</9>
a második a hibás: <9>MMMM</9>

Hogyan lehetne ezt megoldani shell-ben, akár awk-kal, akár ed-del, bármivel?

Gondoltam már arra, hogy egyszerűen beolvasom a kiemelt sort és a megfelelő tageket kicserélem, akár jó, akár nem... mert a cserével mindenféleképpen jók lesznek az adatok... de a fő gondom az, hogy ahány hiba van az xml-ben, annyiszor 22-sorral több lesz az xml.

Hogyan kéne ezt a problémát megoldani szerinted?
Évek óta kézzel javítom ezeket, tehát vi, duplikált adat megkeres, szemmel adatellenőrzés, kurzor megfelelő helyre mozgatás, majd 22 dd, mentés és ez ismétlődik többszázszor.
Ezt kellene gépesítenem, mert lassan homokot szórok a fejemre és elkezdek magamba beszélni.

Előre is kösz, a rám szánt idődet.
A nappali otthonunk központi helyisége, ahol a család életének fontos eseményei zajlanak. Nem mindegy hát, hogy milyen elvek szerint rendezzük be. Mai bejegyzésünkben tippeket és trükköket mutatunk be, amivel még komfortosabbá teheted nappalidat. 1. Amerikai konyha Az amerikai konyha nagyon…..
0sm 2016.06.05 07:55:44
@rozsdamentes arcél:
A különbözőség jó dolog, mindkettőtöknek igaza van, de veled szemben nekem bejön Szzzz szarkasztikus stílusa. :)