Szkriptek: Python, Perl, Bash, ...

adat transzformáció és számolás: ötleteket tanácsokat szeretnék. awk?

Holló!

Felállás: egy programból adatokat tudok kiexportálni csv-be. Egy másik programba szeretném ezt  beolvasni, de transzformációra van szükség.

Két problémával szembesültem eddig:

1) az exportált adatok között a dátum mezők formátuma ilyen: 01/06/2020 05:11:33
A másik program más formátumot vár: Timestamp format must be yyyy-mm-dd hh:mm:ss

2) a kiexportált adatok mellett szeretném, ha a második program még néhány számolt értéket is kapna.

Az első pontra olyan ötleteim jöttek, hogy sed-ben megírom a teljes sor nagy részére illeszkedő mintát, aztán a dátum mezők különböző részeit megcímkézve az új sorrendben az új elválasztóval kiírom. Vagy date paranccsal meg tudom etetni a kapott időpontot és ki tudom íratni az elvárt formában. Ez a második tűnik egyszerűbbnek, remélem, a néhány száz sorban soronként kétszer meghívni a date-et nem lesz túl lassú.

A második pontot LibreOffice Calc-ban meg tudtam valósítani, (csv betölt, formulákat megír, ods-be kiment), és ezt ki tudom menteni csv-be ismét, és mentéskor a számolt értékeket írja ki nekem, de nem akarok minden egyes export után kézzel átalakítani mindent (pedig, ugye, ez az első pontra is adna megoldást). Le is tudom programozni, bár a shell script tudásom ehhez már kevés, szóval inkább python lenne.

Mind a számolásra, mind a dátum átalakításra jöhetnek ötletek. Bármi lehet, ami nem terheli le nagyon a laptopomat (azért max. 1000 sor feldolgozása ne tartson már hosszú ideig), illetve nem bánnám, ha elegáns, könnyen áttekinthető, egyszerű megoldás jönne. Feltételezem, hogy amit én pythonban programoznék le, azt awk-val elegánsan és röviden meg lehet oldani, és sed-del is, csak kevésbé olvasmányos formában. Persze biztos egy bash scriptben is ugyanazt az algoritmust le lehet írni, amit én pythonban megvalósítanék.

A formulák így néznek ki:

N10: =N9+M10
P10: =LOOKUP(K10,L:L,N:N) megkeresi a K oszlopban található timestamp-et az L oszlopban (az L oszlop növekvő sorrendben van, de vannak duplikációk). Ha van pontos egyezés, akkor az utolsót veszi, ha nincs pontos egyezés, akkor azt az utolsót, ami még kisebb nála.
Q10: =IF(O10="Yes",M10/P10," ")

Lookup példa
K L M N O P Q
  III. 10. 12:35:45   9      
  III. 10. 17:55:21   123      
  III. 10. 17:55:21   42      
  III. 10. 21:47:04   66.6      
III. 10. 17:00         9  
III. 10. 17:55:21         42  
III. 10. 18:00         42  

u.i: Szerkesztéskor a tábla jól néz ki, de a végső nézetben nálam elég gáz. Ha nálatok sem egyértelműek az oszlopok, akkor mondom, hogy csak a K, L, N és P oszlopban van adat.

[MEGOLDVA] grep a konzolon jó, file-ba átirányítva nem

Adott egy fájl: http://oscomp.hu/depot/Dune 2 - Roland MT-32 Soundtrack.ogg.txt
Kiadom rá a parancsot: grep "silencedetect" "Dune 2 - Roland MT-32 Soundtrack.ogg.txt"
Az eredmény: http://oscomp.hu/depot/grep_in_console.txt Tökéletes. (Screenshot: http://oscomp.hu/depot/grep_in_console.png)
De kiadom rá ezt a parancsot: grep "silencedetect" "Dune 2 - Roland MT-32 Soundtrack.ogg.txt" > grep_redirect.txt
És ez az eredmény: http://oscomp.hu/depot/grep_redirect.txt Olyan sorok vannak benne, amiknek nem kéne ott lennie.

Tudja valaki, hogy miért van ez? (Teljesen mindegy, mit bűvészkedtem vele, cat-tal, vagy többszörös pipe-inggal; konzolban mindig jó, file-ban sose...)
Devuan 2 (alias Debian 9, grep 2.27)

fájl hozzáférés

Van két szkriptem. Az egyiket a felhasználó futtatja és a szkript adatokat ír egy adott fájlba. Ugyanehhez a fájlhoz később a rendszergazdának is hozzá kell férnie, és módosításokat eszközölnie. No de elvesznek a felhasználó jogosultságai. 

Van elegánsabb módszer ennél?

owner=$(stat -c %U "${findfile}"), majd chown $owner:$owner $findfile

Hogyan: másoljuk fájlt megbizhatóan egy windows megosztásra ha éppen nem elérhető a megosztás?

Sziasztok,

adott egy linux host, azon fel van mount-olva egy Windows megosztás (/masolni/win). 

Időnként át kell mozgatni fájlokat a linux host-ról a Windows megosztásra, de előfordul, hogy pillanatnyilag nem elérhető a Windows megosztás:

mv: inter-device move failed: ‘/masolni/tovabb.xlsx’ to ‘/masolni/win/tovabb.xlsx’; unable to remove target: Device or resource busy

Mit javasoltok, hogy üzembiztos legyen a fájl mozgatás?

 

Köszönöm.
 

Python unsupported format character ',' MEGOLDVA

Siasztok,

egy php-s kódomat alakítom át python-ra. Az sql parancsokat előre össze szoktam állítani.

Most így próbáltam:

sql="UPDATE job \
                    set type='%s' , \
                    completed_savetime='%s', \
                    completion_status='%s%, \
                    data_class='%s', \
                    data_set_size='%s', \
                    data_size='%s', \
                    end_time='%s', \
                    estimated_bytes='%s', \
                    file_count='%s', \
                    files_totals='%s', \
                    host='%s', \
                    job_state='%s', \
                    level='%s', \
                    name='%s', \
                    nw_client_name_id='%s', \
                    processed_bytes='%s', \
                    saveset_name='%s', \
                    saveset_time='%s', \
                    ssid='%s', \
                    start_time='%s', \
                    vcenter_hostname='%s', \
                    vm_guest_os='%s', \
                    vm_name='%s', \
                    vm_uuid='%s', \
                    where job_id=%s  and torolve=0" % (\
                    tipus,completed_savetime,completion_status,data_class,
                    data_set_size,data_size,end_time,estimated_bytes,
                    file_count,files_totals,host,job_state,level,name, 
                    nw_client_name_id,processed_bytes,saveset_name,saveset_time, 
                    ssid,start_time,vcenter_hostname,vm_guest_os,vm_name, 
                    vm_uuid, job_id, kornyezet)

Az utolsó sorra ezt írja:    

ValueError: unsupported format character ',' (0x2c) at index 134                

Nem értem, hogy hol a hiba. Több másik lekérdezésem is van, ugyan ilyen tördeléssel.

sed csere

Adott egy file:

2020.01.01
23xx
45y
zzzz

és ez a blokk sokszor, más dátummal.

A dátum sorban a .-t le szeretném cserélni -ra. Tehát pl 2020.01.01 -> 2020-01-01

sed -i "s/^\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1-\2-\3 /" file.txt

Ezzel próbálom, de másik sorokban is vacakol...

Mit böktem el?

text keresése vbscriptel webfelületen

Sziasztok,

 

Vbscriptet szeretnék készíteni, ami megnézi, hogy egy megadott weboldalon található szövegben található-e egy megadott keresendő szöveg.

Találtam rá megoldást, de valamiért nem működik.

https://www.tek-tips.com/viewthread.cfm?qid=1700446

A script lefut, de nem történik semmi hibaüzenet nincs.

Van valakinek ötlete, hogy mi lehet a probléma, vagy esetleg van erre egyszerűbb vbscriptes megoldás?

 

Köszönöm a segítséget. 

vbscript

Sziasztok,

 

VBScriptel kapcsolatban szeretnék segítséget kérni.

Olyan VBScriptet szeretnék csinálni amely megnézi egy adott fájl aktuális méretét és a legutolsó módosításának a dátumát és ezt kiiratnám egy html felületre.

Ha ez megvan akkor kibővíteném úgy, hogy egy adott mappába megnézném, hogy melyik belső mappa a legfrissebb.

 

Mivel kezdő vagyok a témában, eddig működő verziót nem sikerült létrehoznom és a neten sem találtam semmi használható megoldást erre.

Köszönöm a segítséget.

bash: email subject dekódolás?

Kaptam egy egyszerűnek tűnő feladatot. Ck. 200 email -ből (dovecot IMAP) kellene táblázatot csinálni. Az első oszlop a dátum a második a subject (tárgy). Mi sem egyszerűbb gondoltam én, de nem tudok rájönni mi ez a kódolás és hogy tudom dekódolni:

Subject: =?ISO-8859-1?Q?Sz=E9kesfeh=E9rv=E1r?= 2. (Krumpli)

Tárgy valójában: Székesfehérvár 2. (Krumpli)

Próbáltam iconv -al és munpack -sl, base64 -el de semmi nem tudtam kinyerni a "Székesfehérvár 2. (Krumpli)" szöveget.
Próbáltam csak egy részével "Sz=E9kesfeh=E9rv=E1r?= 2. (Krumpli)".

Mit nézek be? Mit lehet ehhez használni?

MEGKERÜLTEM

A roundcube listát kinyomtattam pdf -be, copy egy szöveges fájlba, majd néml harccal beemeltem libreoffice calc -ba. Nem lett tökéletes a karakter készltek miatt (utf8) de elfogadták :)

szerver diskspace script probléma.

Sziasztok!

 

A következő problémával kapcsolatban szeretnék segítséget kérni.

Van egy VBS scriptem ami annyit csinál, hogy szervereket pingel és az eredményt kilistázza egy html lapra. Ezt sikerült megoldanom.

Most tovább szeretném fejleszteni, és azt szeretném megoldani, hogy nézze a szerverek lemezméretét is és jelezzen html felületen, ha telik a lemez.

Az előző scriptet továbbírva eddig annyit sikerült elérnem, hogy a pingek után beolvassa a server ipt, de utána megakad.

Valakinek van ötlete, hogy mi lehet a probléma? Köszönöm a segítséget.