Hirdetés
- Poco F7 – bajnokesélyes
- Utolérné riválisait a Vivo akkumulátorban
- Bemutatkozott a Poco X7 és X7 Pro
- Kezünkben a OnePlus 15 és az Oppo Find X9-ek
- Xiaomi 15 Ultra - kamera, telefon
- Xiaomi 15 - kicsi telefon nagy energiával
- Samsung Galaxy S25 - végre van kicsi!
- Hivatalos a OnePlus 13 startdátuma
- Fotók, videók mobillal
- Szívós, szép és kitartó az új OnePlus óra
Új hozzászólás Aktív témák
-
vargalex
félisten
válasz
galaxy55
#2884
üzenetére
Egy nagy file-nál már van értelme. Csináltam egy 15000000 soros teszt file-t (egy sql script tartalmát többszöröztem), 1,5 GB lett (nvme ssd-n van a file):
[gavarga@gavarga-5500 migration]$ time awk '/Foglal/' test.sql > /dev/null
real 0m2,711s
user 0m2,493s
sys 0m0,214s
[gavarga@gavarga-5500 migration]$ time grep Foglal test.sql > /dev/null
real 0m0,005s
user 0m0,001s
sys 0m0,005sItt mondjuk valószínűleg túl okos a rendszer, ezért valójában lehet, hogy nem is történik grep.
File-ba írással:
[gavarga@gavarga-5500 migration]$ time awk '/Foglal/' test.sql > test_awk.result
real 0m2,782s
user 0m2,515s
sys 0m0,214s
[gavarga@gavarga-5500 migration]$ time grep Foglal test.sql > test_grep.result
real 0m1,032s
user 0m0,901s
sys 0m0,130sA 2 file természetesen azonos lett:
[gavarga@gavarga-5500 migration]$ sha256sum test_*
c8aa4496d92f75d57b66b0148de6ba5247c3dd7000707d5107f01283fa8246bc test_awk.result
c8aa4496d92f75d57b66b0148de6ba5247c3dd7000707d5107f01283fa8246bc test_grep.result -
vargalex
félisten
válasz
galaxy55
#2881
üzenetére
Már lemaradtam a szerkesztésről: a
busyboxés így az abban lévőawka routerén van, nem windows alatt... Windows alatt GNU awk van nála. -
vargalex
félisten
válasz
vargalex
#2880
üzenetére
Van egy Windows 7-em virtuális gépben. Arra felraktam a gawk for windows és a grep for windows gnuwin32 alkalmazásokat. Az awk verziója:
D:\>awk --version
GNU Awk 3.1.6
Copyright (C) 1989, 1991-2007 Free Software Foundation.A grep verziója:
C:\>grep --version
GNU grep 2.5.4
Copyright (C) 2009 Free Software Foundation, Inc.Az escape-os verzió tökéletesen működik:
D:\>grep "^CLIENT_LIST" status.txt | awk -F, "{print sprintf(\"%-23s%-25s%-20s%s
\",$8,$3,$10,$13)}"
2024-06-25 23:53:12 192.168.1.111:40175 joskapista AES-256-GCM
2024-06-25 23:53:12 192.168.1.10:40175 gizi AES-256-GCM
2024-06-25 23:53:12 192.168.1.2:40175 nagyonhosszunevu AES-256-GCMSzerk.:
#2881 galaxy55: igen, ezt olvastam és ezért én tegnap raktam fel egy OpenVPN-t a windows 7 virtuális gépre, de az nem rakott fel sem grep-et, sem awk-t. -
vargalex
félisten
válasz
galaxy55
#2877
üzenetére
Windows hiányában nekem más ötletem nincs. A probléma ugye az, hogy a Windows-os awk az aposztrófot nem eszi meg, az idézőjelet pedig awk-n belül nem a fenti módon lehet escape-olni (ha egyáltalán lehet). A tabulátor sajnos nem jó megoldás, mert a nagyon különböző hosszúságú értékek esetén el fog csúszni. A hossztól függően kellene 1, vagy 2 tabulátort tenni.
-
vargalex
félisten
Nincs windows-om, de talán még ezzel próbálkoznék:
grep "^CLIENT_LIST" status.txt | awk -F, "{print sprintf(\"%-23s%-25s%-11s%s\",$8,$3,$10,$13)}"A cat-ot kivettem, mert teljesen felesleges subprocess lesz belőle.
Ha nem megy, akkor a következőt tedd be pl. egy
script.awknevű file-ba:{print sprintf("%-23s%-25s%-11s%s",$8,$3,$10,$13)}Majd a futtatás:
grep "^CLIENT_LIST" status.txt | awk -F, -f script.awk -
vargalex
félisten
válasz
bambano
#2855
üzenetére
A routeren busybox-os awk-s parancsa fut le rendben...
#2851 tjsz: Egyébként én is az idézőjelekre gondolok (a külsőt én is aposztrófra cserélném), illetve ahogy a kolléga írja, egyetlen printf is elég az awk-ban. Egyébként ha az AWK már szétbontja oszlopokra, akkor minek egyáltalán printf és oszlop szélesség igazítás? Nem elég így:
cat status|grep "^CLIENT_LIST"|awk -F, '{print $8, $3, $10, $13}' -
vargalex
félisten
Érdekes, mert mennie kell a sed-es megoldásnak:
[gavarga@gavarga-5500 test]$ echo "Áuu, hosszú: ú" > forras.txt[gavarga@gavarga-5500 test]$ sed 's/./\0\n/g' forras.txtÁuu,hosszú:úA file is biztosan UTF-8-as? Mit mond nálad a
file forras.txt(vagy esetedben, ha file a forrás állomány neve a
file file) parancs?Ezt kellene, hogy visszaadja:
[gavarga@gavarga-5500 test]$ file forras.txtforras.txt: Unicode text, UTF-8 text
Szerk: egyáltalán GNU sed-et használsz? Nem valami embedded rendszeren lévőbusybox-os sed-et? -
vargalex
félisten
Tipikusan egy PID file létrehozásával szokták ezt megoldani (ami úgy szép, ha valóban a PID-et tartalmazza), amit a script végén törölsz. Induláskor pedig ellenőrzöd, hogy létezik-e és az a PID fut-e valóban (esetleg még azt, hogy valóban a saját scripted-e). Ha létezik a file és a PID is, akkor a scriptnek vége. Ha nem, akkor létrehozod a file-t, beleírva a PID-et és mehet a tényleges feladat végrehajtása. A file-t router esetén vagy külső tárolóra, vagy még inkább ramdrive-ra (tipikusan a /tmp, illetve a /var is ilyen pl. OpenWrt alatt) célszerű létrehozni, nem a véges írást biztosító flash-ra.
-
vargalex
félisten
Ahogy a kolléga írja. Az első oszlop a DHCP lease lejárta. Elég erőforrás pazarló lenne ezt a file-t minden másodpercben újraírni...
Esetleg saját scriptet használsz (dhcp-script, vagy dhcp-luascript paraméter) és az írja a lease file-t, a dnsmasq-nál pedig a -9, vagy --leasefile-ro kapcsolóval kikapcsolod a lease file írását. Ez utóbbi magyarázná azt is, hogy miért csak egy új IP kéréskor íródik a file... -
vargalex
félisten
válasz
Fecogame
#2663
üzenetére
Ha tudod a tizedes jegyek számát, akkor:
echo | awk '{printf "%.13f", (100-0.11)*0.000025442/100}'vagy a awk BEGIN-ben echo nélkül:
awk 'BEGIN {printf "%.13f", (100-0.11)*0.000025442/100}'Természetesen, ha csak az általad írt kerekített érték kell, akkor a formátum a
"%.11f".
Nem értem, hogy miért használod a beágyazott AWK-t...
Egyébként az AWK programot sima aposztrófok közé szokás tenni, így nincs kavarodás a printf formátum leírójával. -
vargalex
félisten
Tudom, nem válasz a kérdésedre, nem nem lenne jobb egy verziókezelő bevezetése?
De, hogy valami ötletet is mondjak: levágnám a könyvtárak neveiből az utolsó _-tól, majd nyomnék rá egy uniq-ot. Ekkor megvannak a projektek nevei. Majd projektenként az illeszkedő könyvtárakat sorba rendezném és a 2 legnagyobb kivételével törölném.
-
vargalex
félisten
válasz
Mr Dini
#2245
üzenetére
Én valami ilyesmit csinálnék:
rsscontent=$(echo -e $(echo "rsscontent=<változó szöveg>&Submit=Submit" | sed -e 's/^rsscontent=\([^&]*\)&\(.*\)/\1/' | sed 'y/+/ /; s/%/\\x/g'))Azaz, ha URL encode-olva jön, és az rsscontent tartalma pl.: "változó&szöveg":
gavarga@gavarga-e5540 ~ % rsscontent=$(echo -e $(echo "rsscontent=v%C3%A1ltoz%C3%B3%26sz%C3%B6veg&Submit=Submit" | sed -e 's/^rsscontent=\([^&]*\)&\(.*\)/\1/' | sed 'y/+/ /; s/%/\\x/g'))
gavarga@gavarga-e5540 ~ % echo $rsscontent
változó&szöveg -
-
vargalex
félisten
válasz
spammer
#2151
üzenetére
Ez igaz. Viszont az is lehet, hogy ő konkrétan a file tartalmát akarja módosítani (és nem kiíratni a módosított változatot), akkor pedig már ezt tanulja meg
:sed -i 's/\b19\([0-9]\{2\}\)\b/20\1/g' a
ahol a végén szereplő "a" természetesen a file neve, amit a példájából néztem.
-
vargalex
félisten
válasz
beloadjoker
#2142
üzenetére
Szia!
Én ezt tenném:
cat a | sed 's/\b19\([0-9]\{2\}\)\b/20\1/g'
Új hozzászólás Aktív témák
- Poco F7 – bajnokesélyes
- Becsszó, még mindig készül a Half-Life 3!
- Luck Dragon: Asszociációs játék. :)
- sziku69: Szólánc.
- Háztartási gépek
- sziku69: Fűzzük össze a szavakat :)
- Milyen NAS-t vegyek?
- Utolérné riválisait a Vivo akkumulátorban
- Bemutatkozott a Poco X7 és X7 Pro
- Kezünkben a OnePlus 15 és az Oppo Find X9-ek
- További aktív témák...
- HP Z8 G4 Workstation (gamer célra is) dupla CPU Xeon Gold 6134
- Samsung Galaxy S22 8/128 GB Phantom White ÚJ, gariban cserélt! 6 Hónap Jótállás
- ÁRGARANCIA!Épített KomPhone Ryzen 7 9700X 32/64GB RAM RX 9070 16GB GAMER PC termékbeszámítással
- Zalman S3 Black modern, letisztult szèpsèg
- Telefon felvásárlás!! iPhone 11/iPhone 11 Pro/iPhone 11 Pro Max
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest



