Szkriptek: Python, Perl, Bash, ...

sed/awk/grep

A kerdesem egyszeru, a megoldasaban elakadtam. Talan egy sed/awk/grep guru tudna segiteni.

van egy text fajlom, amiben ki kene torolnom az osszes olyan sort ami datummal kezdodik es a kovetkezo sor is datummal kezdodik.
Jelesul:

a
2017
2017
2017
b
2017
c
2017
2017

||
\ /
\/

a
2017
b
2017
c
2017

a lenyeg, hogy a legutolso datum maradjon meg.

[megoldva] php -> py

Segítene valaki átfogalmazni Pythonban ezt a PHP-s alapszkriptet?
Egyszer már nekiszaladtam, de a beolvasott tömb többszöri felhasználása nem volt triviális (valami iterációs mutatót kellett volna nullázni hozzá).


<?php
fclose(STDOUT); $STDOUT = fopen('out.valami', 'w');

define('d',";");
define('n',"\n");
$f_=file('in.valami',FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

foreach($f_ as $i=>$f){
if ($i==0) continue;
$x=explode(d,$f);
// print_r($x);die;
// [0] => 000001
// [1] => 000023
// [2] => 00191
print implode(d,$x).n;
}

foreach($f_ as $i=>$f){
print $f.n;
}

?>

Szerk: és az empty függvény legfontosabb (warning-kiküszöbölő) funkcióját jól ellátja a https://www.tutorialspoint.com/python/dictionary_setdefault.htm

Input: User browserebol JS-bol timezone - Output: mysql timezone

Sziasztok,

A kerdesem egyszeru, de sok tesztesetet igenyel, amiket nem en akarok "elsokent megkeresni", ha mar mas is megtette. Adott egy erosen multilanguage, tobb orszagbol es tobb idozonabol hasznalt backoffice. Meg egy rakas adat, amit GROUP BY DATE(created_at)-ezik a mysql mikor grafikont rajzolunk. a GROUP BY DATE(created_at) szeretnenk, ha a browser idozonajanak megfeleloen futna le (form fieldkent kuldjuk, PHP adja at es escape-eli amugy).

Amit szeretnek:

Input:
JS-bol a browser felhasznalojanak timezone-ja valamilyen formaban (lehetoleg minel kevesebb (idealis esetben nulla) kulso lib felhasznalasaval. JQuery-t es moment.js -t amugy include-ol a projekt, de a Date() sem tunik olyan butanak, legjobban annak orulnek, ha csak az kene hozza)

Output:
String, amit a mysql megeszik, es atallitja azalapjan megfelelore az idozonat

(Ugy erzem a ketto kozt lesz valami szabvany amit nem ismerek/nem jut eszembe/nem vagyok biztos a teszteseteiben)

Peldak:

Tegyuk fel hogy iden nyaron vagyunk Londonban, vagy Budapesten

JS:


var d = new Date()
var n = d.getTimezoneOffset();
// n == -60 ha London (UTC vs BST (DST)), -120 Budapesten

MySQL-hez string generalas:


// summer: (in winter different offsets apply)
case -60:
    return "SET time_zone = 'Europe/London';";
case -120:
    return "SET time_zone = 'Europe/Budapest';";

Ahol futnia kell a JS resznek: mindenkori legujabb Chrome-on es Safarin (iOS mobil miatt) kivul sehol. Tehat nem zavar, ha nem fut IE8-on pl.

Elso ranezesre mukodo, de altalam nem kedvelt workaround (meg amugy sem tudom, hogy a nyari-teli valtas benne van-e, ha meg is oldom elmeletben, teszteset problemaim tovabbra is lesznek):


GROUP BY DATE(CONVERT_TZ(created_at,'+00:00','+02:00'))

jpg: exif adatokból fájlnév [megoldva]

Sziasztok.

Szeretnék néhány száz képből, melyek különböző fényképezőgépekből születtek, valami áttekinthetőbbet alkotni.
Azt találtam ki, hogy a fájl neve a dátum legyen, utóneve meg az eredeti, fényképezőgép-adta név. Így megmarad az, hogy miből lett, és azonnal látszik, mikori.
#!/bin/bash

#datum szerinti atnevezes
#exiv2 -r'%Y%m%d_%H%M%S_:basename:' rename ./*.JPG
# ezt elvetettem, pedig a basename rendesen kijön

#szerzoi jogok hozzaadasa
exiftool -copyright="xy 2016, All right reserved" \
-author="XYZ" \
-d %y%m%d_%H%M%S%%c_:basename:.%%e "-FileName<CreateDate" ./*.JPG
# most itt meg a :basename: helyében kellene az eredetinek kerülnie, de tanácstalan vagyok.

exit 0

Kérdés: exiftoolnál hogyan hivatkozom a képfájl nevére?
Pl. "kep1.jpg" esetében a "kep1" stringre?

Megjegyzés: eredeti témanyitó bejegyzésemet már tudom módosítani. (kösz, trey)

awk: mezőelválasztóban aposztóf

Sziasztok.

Adott egy string:

'regwe', 'khotkml', 'jgoij 43iojt'

Ezt szeretném cat-tal, grep-pel vagy tail-lal csővezetéken ráküldeni az awk-ra. A string fájlban van, soronként van belőle pár száz.

A problémám az, hogy ha megadom az awk-nak a mezőelválasztót, akkor syntax jelentkezik, ami jogos...

Kipróbáltam ezt is:
{FS="\', \'"}
Ismét hiba.

Valamikor egyszer megoldottam, de elfelejtettem hogyan.
Kösz a segítséget előre is.

(Gondolkodtam azon, hogy split-tel szétdartabololom és csinálok egy tömböt, de ágyúval lőnék verébre.)

python output és wc -l

Van 1 python script, ami kilistáz egy folder tartalmát. Magában működik, de ha megküldöm egy | wc -l -lel, akkor mindig 0-t ad vissza. redirect szintén nem működik. A sima for i in range(1,10) igen, ezért nem gondolom, h a shell-em majmult meg. Amúgy osx. Vagy én hülyültem meg. Ötlet?
Tisztában vagyok vele, hogy ilyen nincs.

Powershell - valtozo atadasa funkciok kozott

Sziasztok!

Adott ket funkciom:

function choose-mount {...}

Function main {...}

main

A script ugy epulne fol, hogy minden funciokba lenne, ezert a torzsben csak a main funcio meghivasa van. A main funcion belul, meghivom a choose-mount funciot majd amikor az lefut (a vegen feltolt ertekkel egy lokalis valtozot) ezt az erteket szeretnem meghivni a main funcioban.

Leheteseges ez, anelkul, hogy globalis valtozot vegyek fol?

Powershell - valtozora szures

Sziasztok,

Az egy powershell script, amivel egy txt fileban akarok szurni.

ket feltetel van, egy nev (Portás) es datum. (yyyy-mm-dd)

$last_day=(Get-Date).AddDays(-1).ToString('yyyy-MM-dd')
$p = @("Portás,$last_day")
Get-Content 'C:\Users\nsuto\Desktop\EXPORT_SECURITY.txt' | Select-String -Pattern $p -SimpleMatch | Set-Content C:\Users\nsuto\Desktop\FilteredContent.txt

minden jo, amig nem szurok valtozora, akkor nem is jon letre a kimeneti fajl. Elv a txt-ben a datum formatum ugyanez, yyyy-mm-dd, ezek az elvalaszto karakterek is.

Ha siman kiiratom a valtozot, akkor jo ertek jon ki, jol formazva...

Hol a hiba, a szuresnel miert nem megy?