- Alacsony profilú, madzagmentes klaviatúrák jöttek a Razer színeiben
- ASUS ROG csúcslap érkezett, ezúttal a "lopakodó" fajtából
- Átvette a DRAM-piac trónját az SK Hynix a Samsungtól
- Pénztárcabarát, ugyanakkor trendi mikrotorony jött a Jonsbótól
- A Linux támogatását vágja meg leginkább az Intel leépítése
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Calibre, az elektronikus könyvtár
- VR topik (Oculus Rift, stb.)
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Egérpad topik
- Először égett le egy újságnál a GeForce RTX 5090
- Milyen belső merevlemezt vegyek?
- Kezdő fotósok digitális fényképei
- Nikon DSLR topik
Ú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őawk
a 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.awk
nevű 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
Á
u
u
,
h
o
s
s
z
ú
:
ú
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.txt
forras.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
Hirdetés
- Spórolós topik
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- XPEnology
- Milyen légkondit a lakásba?
- E-roller topik
- Elektromos autók - motorok
- Samsung Galaxy A34 - plus size modell
- Samsung Galaxy S21 Ultra - vákuumcsomagolás
- Calibre, az elektronikus könyvtár
- Elemlámpa, zseblámpa
- További aktív témák...
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- 27%-OS ÁFÁS SZÁMLA I Jogtiszta Microsoft digitális és fizikai termékek I DIGITALKEYZ.COM
- ROBUX ÁRON ALUL - VÁSÁROLJ ROBLOX ROBUXOT MÉG MA, ELKÉPESZTŐ KEDVEZMÉNNYEL (Bármilyen platformra)
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
- Bitdefender Total Security 3év/3eszköz! - Tökéletes védelem, Most kedvező áron!
- BESZÁMÍTÁS! Gigabyte B650 R7 7800X3D 32GB DDR5 1TB SSD RTX 4080 16GB ZALMAN I3 NEO Corsair 850W
- LG UltraGear Gaming Monitorok -30%
- Telefon szerviz helyben - Gyors javítás, akár 30 perc alatt!
- BESZÁMÍTÁS! 4TB Western Digital RED Pro SATA HDD meghajtó garanciával hibátlan működéssel
- 16 GB-os RTX A4000 HP - garanciával
Állásajánlatok
Cég: FOTC
Város: Budapest