Hirdetés

2024. április 19., péntek

Gyorskeresés

Hozzászólások

(#1751) Jester01 válasza prucam (#1750) üzenetére


Jester01
veterán

Elvolvasod a "line addressing" részt az ed leírásában :P
Lásd kivel van dolgod: a \$ helyére lehet tetszőleges sorszámot írni.

Jester

(#1752) prucam válasza Jester01 (#1751) üzenetére


prucam
tag

"Tanár úr kérem,

Elvolvastam a "line addressing" részt az ed leírásában... :R
De ez többet segített:
"Lásd kivel van dolgod: a \$ helyére lehet tetszőleges sorszámot írni." :C

Az elmúlt 40 évben, sajnos nem látogattam óráit. Majd igyekszem bepótolni." :D

(#1753) Dj Sügi


Dj Sügi
őstag

Aki otthon van a reguláris kifejezésekben és szívesen segítene az dobjon már egy privit nekem. :Y
Köszönöm! :R

                          🚗 FORD - First On Race Day 🚗

(#1754) csiki_92


csiki_92
aktív tag

Sziasztok!

Olyan kérdésem lenne, hogy adott adat nevű fájl, melyben az alábbi minta szerint vannak adatok:
1.,Balogh Elvira,hölgy,1988.06.02.,Sárospatak,85000

A következő a feladat: Melyik napon született a legtöbb úr? Listázzuk az egyes napok sorszámát, és az akkor született urak számát, darabszám szerint növekvő sorrendben.

A megoldásom a következő:
sort -t, -rk5 adat | awk -F, '($3=="úr") { print $4 }' | uniq -c | awk ' { print $2"\t"$1 }' | sort

Nos, ezzel az a baj, hogy a teljes évszámot kategorizálja, és kiírja például, hogy 1965.08.25-én 1 úr született. Nekem pedig csak napokra lebontva kellene a megoldás. Ha valaki tudna segíteni benne, akkor azt nagyon megköszönném!

(#1755) bambano válasza csiki_92 (#1754) üzenetére


bambano
titán
LOGOUT blog

a substr függvénnyel levághatod az évszámot a születési mezőből, valahogy így
print substr($4,6,5)

szerk: ugye a példád nem létező személyi adatokat tartalmaz?

[ Szerkesztve ]

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#1756) csiki_92 válasza bambano (#1755) üzenetére


csiki_92
aktív tag

Ezzel most hónapokra kategorizálta, szóval pl.: 12.01-én 1 úr született.

Valószínűleg nem. Iskolai feladat, nem én csináltam.

[ Szerkesztve ]

(#1757) csiki_92 válasza bambano (#1755) üzenetére


csiki_92
aktív tag

Na az alábbi paranccsal sikerült eljutnom odáig, hogy levágja az évet és a hónapot:
sort -t, -rk5 adat | awk -F, '($3=="úr") { print substr($4,9,3) }' | uniq -c | awk ' { print $2"\t"$1 }' | sort

Viszont még mindig van két problémám, az egyik, hogy ettől függetlenül még mindig teljes dátum szerint csoportosít, nem napok szerint, a másik, pedig, hogy dátum szerint rendezi sorba, és nem darabszám szerint.

(#1758) bambano válasza csiki_92 (#1757) üzenetére


bambano
titán
LOGOUT blog

ha az utolsó awk-ban a $2-t és a $1-et felcseréled, akkor már jól fog rendezni.
azt hogy érted, hogy teljes dátum szerint csoportosít?

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#1759) Jester01


Jester01
veterán

Ha már shell script topik akkor itt a szokásos megoldásom is :DD

#! /bin/bash

declare -A stats
maxcount=0

while read line
do
tmp=${line#*,*,}
if [ "${tmp:0:2}" != "úr" ]
then
continue
fi
tmp=${tmp#*.*.}
day=${tmp:0:2}
if [ -z "${stats[$day]}" ]
then
count=1
else
count=$((stats[$day] + 1))
fi
stats[$day]=$count
if [[ $count > $maxcount ]]
then
maxcount=$count
maxday=$day
fi
done
echo "$maxday ($maxcount)"

[ Szerkesztve ]

Jester

(#1760) csiki_92 válasza bambano (#1758) üzenetére


csiki_92
aktív tag

Úgy, hogy kiírja például, hogy:
31. 1 db
31. 1
31. 2
31. 1

Szóval nem csoportosítja pl. itt úgy, hogy 31. 5. Gondolom én, hogy attól még, hogy én csak a napokat látom, attól még a dátum levágott részét is figyelembe veszi a csoportok létrehozásánál.

(#1761) bambano válasza csiki_92 (#1760) üzenetére


bambano
titán
LOGOUT blog

ezt azért csinálja, mert minden hónapban lehet 12.-e. ezt úgy tudod megjavítani, ha a uniq -c elé közvetlenül is teszel egy sort-ot.

szerk: "Gondolom én, hogy attól még, hogy én csak a napokat látom, attól még a dátum levágott részét is figyelembe veszi a csoportok létrehozásánál.": nem, nem veheti figyelembe, mert az nincs ott.

az ok az, hogy a uniq csak akkor tudja korrekten összeszámolni a sorokat, ha azok egybefüggően, egymás után vannak. viszont:
dátum levágott dátum
1988.05.12 12
1988.05.20 20
1988.06.12 12

ez lesz belőle, ezt a uniq nem tudja összeszámolni, mert nem tárolja el az egész fájlt, csak az éppen feldolgozott plusz az előtte levő sort.

[ Szerkesztve ]

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#1762) bambano válasza Jester01 (#1759) üzenetére


bambano
titán
LOGOUT blog

az ilyen != úr continue stílusért rendes helyen buktatnak :P

szerk: jóhogy nem már goto :P

[ Szerkesztve ]

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#1763) bambano válasza csiki_92 (#1754) üzenetére


bambano
titán
LOGOUT blog

szerintem a megoldás:

grep ',úr,' adat| cut -d, -f 4| cut -d. -f 3 | sort | uniq -c | sort -n| tail -1

vagy valami ilyesmi, teszt nélkül :)

[ Szerkesztve ]

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#1764) Jester01 válasza bambano (#1762) üzenetére


Jester01
veterán

Rendes helyen az orruknál tovább látnak az emberek és belátják, hogy a túlzott egymásbaágyazás kerülendő és semmi baj nincs se a continue-val se az ésszerű goto-val (példának okáért lásd még azt a százezer darabot ami a linux kernelben van). :P

Jester

(#1765) csiki_92 válasza bambano (#1763) üzenetére


csiki_92
aktív tag

Sikerült megoldani, köszönöm a segítséget. :R Egyébként így néz ki a megfejtésem:
sort -t, -rk5 adat | awk -F, '($3=="úr") { print substr($4,9,3) }' | sort | uniq -c | awk ' { print $2"\t"$1 }' | sort -n -k2

(#1766) bambano válasza csiki_92 (#1765) üzenetére


bambano
titán
LOGOUT blog

biztos, hogy az első sort kell bele?

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#1767) csiki_92 válasza bambano (#1766) üzenetére


csiki_92
aktív tag

Ezen én is gondolkodtam így utólag, de ha már találtam egy jó megoldást, akkor már jó.

(#1768) prucam


prucam
tag

Sziasztok,

ptc-zek s szeretném a reff-ek átlagát kiszámolni. Odáig eljutottam, hogy a .htm-ből megkapjam a sorokat:
Egy részlet, hogy néz ki:
....
17 [R781153008 ] 2014/05/27 at 22 days and 2014/05/ 7 1.000 [recycle] [info-r] [ ]
00:31 21:14 28
18 [R3325737139 ] 2014/05/27 at 22 days and Yesterday 7 1.000 [recycle] [info-r] [ ]
00:31 21:14
19 [R2656436594 ] 2014/05/27 at 22 days and 2014/05/ 4 0.571 [recycle] [info-r] [ ]
00:31 21:14 27
20 [R1966968045 ] 2014/05/23 at 17 days and 2014/05/ 2 0.182 [recycle] [info-r] [ ]

A tizedesjegyű-számokat szeretném szűrni, de elakadtam:

grep -o [0-9].[0-9][0-9][0-9]

eredmény:
1.000
33257
37139
1.000
26564
36594
0.571
19669
68045
0.182

(#1769) sto1911 válasza prucam (#1768) üzenetére


sto1911
veterán

A pontot nem kell escape-elni? Mert anelkul azt jelenti, hogy barmely karakter, egyszer (vagy valami hasnolo remlik :) )

(#1770) prucam válasza sto1911 (#1769) üzenetére


prucam
tag

igazad van :C

grep -o '[0-9]\.[0-9][0-9][0-9]'

3.133
2.933
3.600
1.867
0.800
....

Most már csak az oszlopban szereplő számok átlagát kellene kiszámolni....
Hmmm...de hogyan.... bc vagy talán awk??

(#1771) Jester01 válasza prucam (#1770) üzenetére


Jester01
veterán

awk-val az egész:

awk '
{
if (match($0, "[0-9]\\.[0-9][0-9][0-9]") == 0) next;
count += 1;
sum += substr($0, RSTART, RLENGTH);
}
END { print sum / count }
'

Jester

(#1772) Lacpac


Lacpac
őstag

Sziasztok,

Indítottam egy kis házi szerverecskét ubuntu alapokon.
Regisztráltam egy dns szerverre, és most ddclient végzi az ip frissítését.
Az vele a gondom, hogy a ddclient 300s-ként (5 perc) végzi ezt el.
Nekem a 100%-os elérhetőség lenne a cél. Volt rá példa hogy 4 óra alatt 3× váltott ip-t a szolgáltató.
Lehet olyan script-et írni amivel pingelem a dns címem 5s-ként, majd ha nem érkezik rá válasz 3s alatt akkor restartolja a ddclientet?
Restartkor ugye rögtön frissíti az ip-t.

Ha lehet akkor tudna benne segíteni valaki? Kezdő vagyok linuxból.

Köszi előre is a válaszokat.

(#1773) bambano válasza Lacpac (#1772) üzenetére


bambano
titán
LOGOUT blog

lehet, csak semmi értelme. a dns rendszer nem fog attól frissülni, hogy te újraindítod a ddns scriptedet.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#1774) Lacpac válasza bambano (#1773) üzenetére


Lacpac
őstag

Próbáltam, mikor újraindítottam a ddclientet akkor rögtön aktualizálta az ip-m. Persze kétszer egymásután nem, de ha az ip cserék (router restart) között eltelt egy 10-20 perc akkor már rögtön frissítette.

(#1775) prucam válasza Jester01 (#1771) üzenetére


prucam
tag

Jester, köszi szépen az awk-s megoldást. Szuper! :R

Van egy file, amiben egy oszlopban vannak a számok. Valahogy így:

0.2121
1.21
3.423
1.23

Nekem így kellene:

0.2121 1.21 3.423 1.23

Egy sorba, s az elválasztás köztük egy tabulátor legyen.

Azért próbálkoztam....pl.:

sed -i 's/\n/\t/' file

:F

(#1776) bambano válasza prucam (#1775) üzenetére


bambano
titán
LOGOUT blog

ls -l | tr '\n' '\t'

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#1777) BoB válasza prucam (#1775) üzenetére


BoB
veterán

Ha mindenképp sed-el kell: ':a;N;$!ba;s/\n/\t/g'

You may corrupt the souls of men, but I am steel. I am doom.

(#1778) Jester01


Jester01
veterán

Vagy paste -s

[ Szerkesztve ]

Jester

(#1779) prucam


prucam
tag

Végül is a "tr"-es megoldás lett:

cat file | tr '\n' '\t'

Egyébb:

- a "sleep" parancs mire jó, mikor használjuk?

- az awk-s parancsnál fent (#1771) beillesztettem script-be, s az lenne a kérdésem, hogy nem lehet-e azt megformázni; sor elejére igazítani (v. egy sorba az egész)?

(#1780) bambano válasza prucam (#1779) üzenetére


bambano
titán
LOGOUT blog

fork bombáért körmös jár :P

tr '\n' '\t' file.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#1781) prucam válasza bambano (#1780) üzenetére


prucam
tag

Gondoltam… :DD

Próbáltam, de nem történik semmi. Ctrl+C-vel kell kilépnem.

tr '\n' '\t' abc_2

v. a "paste -s" lesz a jó :F

(#1782) bambano válasza prucam (#1781) üzenetére


bambano
titán
LOGOUT blog

jééé, ilyet még nem láttam, hogy szabványos bemenetről megy, argumentumként meg nem...bocs.

akkor tr ... <file

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#1783) prucam válasza bambano (#1782) üzenetére


prucam
tag

Nem tudom mit csinálok rosszul!? :W

ez sem jó:
tr '\n' '\t' < abc

a file-vel nem csinál semmit, csak a terminálba írja

(#1784) Speeedfire


Speeedfire
nagyúr

Sziasztok!

Felmerült egy olyan "igény", hogy dinamikusan tudjam állitani a hálózat proxy részét. Cégen belül proxy-t kell használni, de amikor nincs rá szükségem, akkor ki kell kapcsolni. Ezt ugye meg csak úgy tudom, ha kikommtezem a környezeti változót és újrainditom a gépet. Ehhez keresnék megoldást. Jelenleg saját proxy-val van megoldva.
Innen indult az egész.

#200012 bambano:
a /etc/profile-t minden login shell végrehajtja, tehát azt látni fogja mindenki, aktuális helyzet szerint.
Nekem elég ha a saját user és a root használja ezeket a proxy beállitásokat, a legnagyobb bajom ezzel ugye a ki-belépés. Minden programot bezárni, kilépni, belépni. Főleg ha melózok épp valamin.
Ha a saját helyemen ülök, akkor kell a proxy, de ha már wifi-zek, akkor nincs rá szükség, mert olyankor inkább csak jegyzetelek, vagy neten mutatom be, mit csináltam.

Olyan lenne a legjobb, ami dinamikusan állitja a proxy változókat. Legyen akár valami tigger, hálózati ip alapján, vagy akár egy parancsikon az asztalon. :)

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#1785) bambano válasza Speeedfire (#1784) üzenetére


bambano
titán
LOGOUT blog

még mindig azt tartom legegyszerűbbnek, hogy legyártod az apt konfigját két példányban, és írsz egy scriptet, ami cseréli. A scriptet az ip-up.d könyvtárba kell tenni, akkor minden esetben végrehajtódik, amikor felhúzza az interfészt.

ha megmondod, mi a különbség a céges net és az otthoni között, akkor meg lehet faragni a scriptet, ami meg tudja különböztetni a kettőt.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#1786) Speeedfire válasza bambano (#1785) üzenetére


Speeedfire
nagyúr

Az apt a legkevesebb, mert az át tudom írni futás időben is. 1 sor komment.

Igazából az ip tartomány a különbség a 2 környezet között, nekem a sidewide környezeti változó lenne a fontos, hogy kilépés nélkül is tudjak cserélni http_proxy és a https_proxy változókat.

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#1787) buherton


buherton
őstag

Ezt most találtam:

:(){ :|: & };:

;]

tely, baly, fojó, mennyél, mingyárt, telyföl, tolyás, malyd, kapú, egyenlőre, ejsd, jáccani, ahoz, fúj, hüje, muszály, alat, álok, lasan, fojtatás, ál, fontós, költsön, eggyüt, lyob (jobb?), mek, mongyak, milyért - !!! Tanúlyunk már meghejjessen irni... !!!

(#1788) Sleed


Sleed
aktív tag

válasz bob.zxr hozzászólására:

egyik sem működik sajnos :(

az elsőre az output:
/home/pi/test/logs_..zip

szerk: ez működik, elgépeltem, bocsi

a második abból a könyvtárból szépen lefut, nem is rakja bele a felesleges könyvtárakat, de ha máshonnan akarom futtatni akkor ezt dobja:

zip warning: name not matched: ./logs

zip error: Nothing to do! (try: zip -r -b /home/pi/test/ /home/pi/test/logs_device00.zip . -i ./logs)

az eredeti probléma

[ Szerkesztve ]

(#1789) BoB válasza Sleed (#1788) üzenetére


BoB
veterán

Azt elnéztem, csak adott könyvtárban működik. Mindenképpen kell a log mappa vagy elég ha csak a fájlok vannak belőle? (értsd: a zip fájlban egyből a fájlok vannak mindenféle mappa nélkül)

Mert akkor így:
/usr/bin/zip -rj /home/pi/test/logs_$HOSTNAME.zip /home/pi/test/logs/*

[ Szerkesztve ]

You may corrupt the souls of men, but I am steel. I am doom.

(#1790) Sleed válasza BoB (#1789) üzenetére


Sleed
aktív tag

az nem lenne baj ha log mappa nem lenne, de az alá be van ágyazva egy egész $year/$month/$day mappaszerkezet, és azokra mindenképpen szükségem lenne.

(#1791) BoB válasza Sleed (#1790) üzenetére


BoB
veterán

Írj az eredeti javaslatom elé egy cd /home/pi/test/ -et és akkor jó lesz.

Tehát:
cd /home/pi/test/
/usr/bin/zip -r /home/pi/test/logs_$HOSTNAME.zip -b /home/pi/test/ ./logs

[ Szerkesztve ]

You may corrupt the souls of men, but I am steel. I am doom.

(#1792) Sleed válasza BoB (#1791) üzenetére


Sleed
aktív tag

működik, nagyon szépen köszönöm!

(#1793) Jim-Y


Jim-Y
veterán

Sziasztok!

Ide is belinkelem, hátha itt is tudnak okosat mondani: http://prohardver.hu/tema/linux_abszolut_kezdoknek/hsz_27514-27514.html

Üdv, köszi

(#1794) bambano válasza Jim-Y (#1793) üzenetére


bambano
titán
LOGOUT blog

find konyvtar -name filenevek | xargs grep string

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#1795) Nefri


Nefri
csendes tag

Sziasztok!

A probléma a következő: Van egy fájl szerkezetem, amiben elszórva vannak txt fájlok. Minden txt fájl tartalmaz egy időpontot(hányadik nap a héten / hányadik óra) és egy olyan keresést szeretnék végrehajtani, hogy a futtatás pillanatában megvizsgálom, hogy épp a hét hányadik napja van, hányadik órában vagyunk, majd végig menni az összes txt-n és ha egyezés van az ottani időponttal, akkor végrehajtani néhány parancsot a txt-ben szereplő egyéb paraméterek alapján, majd folytatni a keresést, hogy van-e még időpont egyezés a többi txt-ben.

Ha csak egy txt van a fájlszerkezetben akkor sikerült az alábbi kóddal működtetni:

#!/bin/bash
actday=$(date +"%u")
acthour=$(date +"%k")
fileday=$(cat /root/autoscan/objects/*/*/*.txt | sed -n '3p')
filehour=$(cat /root/autoscan/objects/*/*/*.txt | sed -n '5p')
if [ $actday -eq $fileday ]
then
echo "egyezik"
fi

Azonban nem tudom, több találat esetén, hogyan lehet egy találatot követően felfüggeszteni a keresést, megcsinálni a txt alapján a szükséges műveleteket, majd ha megvagyok tovább folytatni a keresést.

Minden javaslatot hálásan köszönök!

(#1796) Jester01 válasza Nefri (#1795) üzenetére


Jester01
veterán

find + ciklus

#!/bin/bash
actday=$(date +"%u")
acthour=$(date +"%k")
find /root/autoscan/objects -type f -name \*.txt |
while read file
do
fileday=$(sed -n 3p "$file")
filehour=$(sed -n 5p "$file")
if [ $actday -eq $fileday ]
then
echo "egyezik"
# tovabbi tennivalok itt
fi
done

Jester

(#1797) Nefri válasza Jester01 (#1796) üzenetére


Nefri
csendes tag

Köszi szépen, műxik!

(#1798) Rimuru


Rimuru
veterán

Hogy lehet egy szkriptben "elrejteni" egy fájlt? Tehát egy nagyobb fájl tartalmazzon mindent, a részeket utána kirakom pl.: /tmp-be és onnan dolgozik tovább vele.

Vigyázat, csalok!

(#1799) bambano válasza Rimuru (#1798) üzenetére


bambano
titán
LOGOUT blog

például úgy, hogy base64-gyel átkódolod tiszta ascii-ra, azt berakod a scriptbe, és here-documenttel dekódolod.

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#1800) Jester01 válasza Rimuru (#1798) üzenetére


Jester01
veterán

Lásd még shar

Jester

Copyright © 2000-2024 PROHARDVER Informatikai Kft.