Portál AbcLinuxu, 31. října 2025 06:38
... May 10 16:23:00 aaaaa May 10 16:23:33 bbbb ... May 11 16:23:33 cccc May 11 16:23:35 dddd ... May 12 16:25:48 eee ....A potrebuju z nich vyparsovat jen urcitou cast od urciteho data,hodiny,minuty zase do urciteho data. To znamena uriznout radky, ktere uz tam nepatri. Udelal jsem to bash skriptem s pomoci "date %s". Ale je to celkem narocne na cas, neexistuje nejaky rychlejsi bashovy zpusob?
May 10 16:23:00 May 12 16:25:48ale ja to potrebuju od konkretniho casu, ktery ani v tech logach nemusi byt... tzn. treba
od: May 10 16:23:01 do: May 11 16:23:34
sed -n \ -e '/May 10 16:23:0[1-9]/p' \ -e '/May 10 16:23:[0-5][0-9]/p' \ -e '/May 10 16:2[3-9]:[0-5][0-9]/p' \ -e '/May 10 16:[2-5][0-9]:[0-5][0-9]/p' \ ...otazka zni jak casto se to dela jestli to stoji za to psani
Oh fuck. (Seřadil bych je.) Spíš bych si našel začátek a konec (nejlépe půlením intervalu) a pak vyřízl řádky, co jsou mezi tím.sed -n \ -e '/May 10 16:23:0[1-9]/p' \ -e '/May 10 16:23:[0-5][0-9]/p' \ -e '/May 10 16:2[3-9]:[0-5][0-9]/p' \ -e '/May 10 16:[2-5][0-9]:[0-5][0-9]/p' \ ...
 Jinak pokud imho pokud to bude souvysly interval tak pocet regularu tak rust nebude, spise roste s presnosti casu, coz ale na principu, ze je to zametani hrabema samozrejme nic nemeni.
Jinak pokud imho pokud to bude souvysly interval tak pocet regularu tak rust nebude, spise roste s presnosti casu, coz ale na principu, ze je to zametani hrabema samozrejme nic nemeni.
            Dobry den.
Neco podobneho jsem nedavno psal.
Je to na log velikosti radove stovek GB.
Hledam pouze zacatek.
Do logu se prubezne zapisuje a tak si urcim bod do ktereho ctu.
Vubec mi tam nevadi ze kdyz to neni uplne presne, povoluji maximalne 20 iteraci.
#***********************************************************tady hledam co mohu preskocit
CAS="$(date -d "${PRED} hour ago"  +'%b %e %H:%M')"
CASS="$(date -d "${CAS}" +%s)"
ZACATEK=0
KONEC=$(ls -l /var/log/blabla|awk '// {print $5}')
MAX=0
while [ ${ZACATEK} -ne ${KONEC} ]
do
        POROVNEJ="$(dd if=/var/log/blabla bs=1 skip=$((KONEC/2+ZACATEK/2)) 2>/dev/null |head -n2 | sed -e'2s/\([^ ]\+ \+\)\([^ ]\+ \+\)\([^ ]\+ \+\)\([^ ]\+ \+\).*/\1\2\3\4/p;d')"
        
        if [ ${CASS} -gt "$(date -d "${POROVNEJ/:[0-9][0-9] */}" +%s)" ]
        then
                ZACATEK=$((KONEC/2+ZACATEK/2))
        else
                KONEC=$((KONEC/2+ZACATEK/2))
        fi
        if [ $MAX -gt 20 ] || [ "${CAS}" = "${POROVNEJ/:[0-9][0-9] */}" ]
        then
                KONEC=${ZACATEK}
        fi
        MAX=$((MAX+1))
done
#*************************************************************snad jsem to nasel a mam to v $KONEC
pak to pouzivam:
VELIKOST=$(ls -l /var/log/blabla|awk '// {print $5}')
dd if=/var/log/blabla bs=1024 skip=$((KONEC/1024)) count=$(((VELIKOST-KONEC)/1024)) 2>/dev/null 
Marek
            a preco by to akoze neslo? :)
egrep "^May 1[0-1] 16:23:(?0([1-9])|(?[1-2]([0-9])|(?3([0-4])|())))$"
        Tiskni
            
                Sdílej:
                 
                 
                 
                 
                 
                 
            
    
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.