- Magisk
- Google Pixel 8a - kis telefon kis késéssel
- Milyen okostelefont vegyek?
- Samsung Galaxy S23 Ultra - non plus ultra
- Samsung Galaxy A56 - megbízható középszerűség
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Fotók, videók mobillal
- iPhone topik
- Samsung Galaxy A34 - plus size modell
- Samsung Galaxy A36 5G - a középső testvér
Új hozzászólás Aktív témák
-
CPT.Pirk
Jómunkásember
No, megvan végre a log_10() funkció is.
function log10(x) {\
return log(x)/log(10.0);\
}\
{a=substr($0,0,4); b=substr($0,4,4); if (a > 0) printf "%d,%d,%f\n",a,b,20*log10(b/a); }Így már jók a kiszámolt erősítés értékek. Ezeket kellene átirányítanom egy fájlba kezdésnek. Per pill még nem sikerült.
Valamint néha a 2. szám elcsúszik 1-2 értékkel, ezzel kezdenem kell valamit.
-
CPT.Pirk
Jómunkásember
Tehát ilyen formában, "egysorosként"?
awk ' {a=substr($0,0,4); b=substr($0,4,4); printf "%d,%d,%f\n",a,b,log(b/a); }' /dev/ttyUSB0
Ebben az esetben gondja van a filenévvel.
awk: (FILENAME=/dev/ttyUSB0 FNR=1) fatal: 0-val osztás kísérleteMindenképpen bele kellene terveznem valami "start karakter" felismerést majd, azt fixen bele fogom tenni az fpga programjába. Ahogy nézem, csak úgy biztosítható, hogy a jó számjegytől kezdjek el rögzíteni.
-
CPT.Pirk
Jómunkásember
Na arra rájöttem, hogy ilyen formában gondolod az awk indítását terminálban:
awk -f program.awk /dev/ttyUSB0
Ebben az esetben ha jól értem a FAQ-ot, a "FILENAME" változó jelenti a /dev/... -t, és ezzel kell hivatkozni rá, vagyis ez a standard input.
Egyszer ennyit írtam az awk fájlba (a txt fájl létezik):
OUTPUT="/home/pa.... /output.txt
FILENAME > OUTPUT
Ez annyit csinál, mintha azt írnám a terminálba, hogy cat /dev/ttyUSB0. Szóval csak kiírja az értékeket. Innen jó lenne egy kis segítség valamilyen szinten. Gugliztam egy kört, de valahogy nem akar előjönni egy érthető awk leírás, amivel tovább tudnék lépni.
-
bambano
titán
válasz
CPT.Pirk #992 üzenetére
ha awk -f -fel hívod, akkor nem kell az elejére a #! kezdetű sor.
egyébként meg próbáld ki.
de nem a begin blokkba kell megírni az egész awk progit.
a 2d koordinátázást meg úgy érdemes megcsinálni, hogy awk-ból olyan kimenetet csinálsz, amit a gnuplot meg bír enni és akkor összekötöd a kettőt. -
CPT.Pirk
Jómunkásember
Tehát akkor ez úgy van, hogy írok egy .awk fájlt ilyen módon:
#!/bin/awk -f
BEGIN {
számolós kód
.
..
...
exit;
},majd pedig az egészet meghyvom így a terminálban:
awk -f program.awk ?
Nem egy soros terminálos cuccban gondolkodok, mert később még jó lenne a pontokat betenni egy egyszerű 2D koordináta rendszerbe. Bár ez már hyper advanced lesz nekem. -
bambano
titán
válasz
CPT.Pirk #988 üzenetére
awk ugyanúgy interpreter, mint a shell, nagyjából ugyanúgy is kell használni. lehet parancssori is. pl.
echo 12345678| awk ' {a=substr($0,0,4); b=substr($0,4,4); printf "%d,%d,%f\n",a,b,log(b/a); }'
ezt már variálhatod kedvedre
még annyit, hogy ehhez nem kell cat, az awk meg tud nyitni minden karakteres fájlt (is). tehát egy cat /dev/ttyUSB0 | awk felesleges, jó az awk /dev/ttyUSB0-nak is.
-
-
bambano
titán
válasz
CPT.Pirk #984 üzenetére
a szeparáló karakter általában egy jó ötlet, a kérdés, hogy az fpga-t egyszerűbb-e újraprogramozni, vagy a shell szkriptet egyszerűbb mókolni. szerintem a második, de megvárjuk Jester01 kollégát a szokásos sormintáival
sedben pl. annyi, hogy négy darab számot le kell választani egy regexp-pel, valami ilyesmi lehet:
echo 12345678| sed -e 's,\([0-9]\{4\}\)\([0-9]\{4\}\),echo $(( \1 / \2 )),'de lehet awk-ban is és akkor rögtön megcsinálhatja az osztást (a shell egész számokat kezel).
-
CPT.Pirk
Jómunkásember
Megvan a válasz, a cat érti az új sor (decimális 10) karakterét, valszeg a többi vezérlő karaktert is. Gyönyörűen írogatja a dolgokat ilyen formában, ha 9. byte az új sor byte-ja.
xxxxyyyy
xxxxyyyy
xxxxyyyyMost annyi kellene, hogy valamilyen módon szétszedem xxxx yyyy -ra a 8 számjegyet, hogy lehessen osztani yyyy -t xxxx -el. Tegyek be valami szeparáló karaktert, amire egy függvény rá tud keresni, vagy számolgassak karaktereket?
Mondjuk ez a bin -> bcd átalakítás nem volt éppen egyszerű téma.
-
CPT.Pirk
Jómunkásember
Ez jó ötlet.
Tehát ha hozzáadok a 0-hoz 48-at, akkor kapom az ascii beli 0-t. Magyarul ha elküldöm az 110000 -t a terminálnak, akkor egy 0-t kell lássak a cat-al. (és így tovább)
Még hozzáadni sem kell, egy "case" függvénnyel kvázi statikusan le lehet írni, hogy ha x a bemenet, akkor y a kimenet, a mindössze 10 érték miatt ez nem is bonyolult.
Ha az egészet befoglalom STX, ETX karakterek közé (vagy valamelyik hasonló közé), akkor a cat ezt meg fogja érteni, vagy kitolja ezeket is a fájlba?
-
-
CPT.Pirk
Jómunkásember
Ahogy nézem, ez nem is egyszerű feladat. FPGA-ban nem nagyon van olyan, hogy ascii.
Talán az járható út, hogy BCD átalakítást csinálok, majd pedig a számjegyeket egy LUT táblában leírtak szerint átalakítom az ASCII kódjukra, és azt küldöm el. Trükkös lesz. [link]
Kicsit egyszerűbb lenne az od, csak hogy miért téveszti el a kezdést, az jó kérdés.
-
CPT.Pirk
Jómunkásember
Nem mikrovezérlő, ott nem tudom hogyan zajlik a soros port móka.
Szóval arra gondolsz, hogyha decimális formában küldöm át, pl. BCD kódban, akkor a cat parancs már számokat fog nekem kiadni? Ezt relatíve könnyen meg tudom csinálni, mert van egy kész bin - bcd konverterem.
-
CPT.Pirk
Jómunkásember
válasz
CPT.Pirk #973 üzenetére
Na jó, rájöttem, annyira nem nehéz az alapokat megírni. Szóval írtam egy pici scriptet, ami kitolja egy txt fájlba az értékeket. Viszont ha od-vel csinálom, akkor az előzőben vázolt probléma fent áll, ha rossz helyen kapja el a számokat, akkor minden érték hibás lesz.
cat-al pedig csak ascii karakterek mennek a fájlba, ahogy nézem, ez nem is alkalmas arra, amit szeretnék.
Tudtok valamit, ami az od-t kiváltaná?
-
CPT.Pirk
Jómunkásember
Na most valami tanácsot szeretnék kérni. Még mindig a soros port olvasás gondom van.
Ha od-val nézem a /dev/ttyUSB0 -t, akkor vagy eltalálja, hol kezdek adatot küldeni, vagy nem. Úgy csináltam meg az adat szerkezetet, hogy 00 00 a kezdést jelöli, FF FF pedig a végét, és a közte lévő 2 darab szám értékére van szükségem.
Amikor jó, akkor ilyen formátuma van a kimenetnek: (od -An -t x1 /dev...)
00 00 xx 0x xx 0x FF FF 00 00 xx 0x xx 0x FF FF(xx 0x a normális adat forma a 12 bites számaimhoz)
Más esetekben meg ott indul, ahol gondolja. Tehát van, hogy 00 xx 0x xx 0x FF FF ..., van hogy FF 00 00 xx 0x xx 0x FF FF 00 00 xx 0x xx 0x FF
Amikor jó helyen kapja el, akkor minden érték stimmel. Ha nem, akkor meg rossz párokat rak össze, pl. utolsó példánál az FF 00, az 00 xx, és az 0x FF fogják alkotni a számpárokat, ami nem jó.
Nem tudom hova tenni az od ilyen viselkedését. Olyanra tudtok mondani egy egyszerű szkriptet, hogy egyszerűen pl. lementi a cat /dev/ttyUSB0 kimenetét egy fájlba, de olvasható formában? Terminálban ez a parancs kidob egy rakás kérdőjel szimbólumot és semmi mást.
-
eriktoth
tag
Üdv van a következő kódom es syntaxis hibat jelez:
while read file
isdir=false
isfile=false
for f in $file/*
do
if [ -d $f ] ; then
isdir=true
else isfile=true
fi
done
doneA lényege az lenne, hogy megnézi hogy a megadott mappában vannak e másik mappák és fájlok. Vagy esetleg valakinek valami jobb megoldás? Nekem elsőre ilyesmi ugrott be.
-
lapa
veterán
hát neme. végül úgy döntöttem megpróbálom kiszedetni belőle az összes felesleges üres sort notepad++-szal. most megnéztem és a textfx pluginban nem csak "delete empty lines" van, hanem "delete surplus empty lines" is. szóval ráeresztettem végül.
ezzel küzdött egy darabig, és látszólag oké lett. mivel valami a komment blokkok körül nem stimmel a seamonkey-nak, most inkább kitöröltem az összes ilyet is (csak inaktív tartalom volt, semmi egyéb lényeges).
azt továbbra se tudom mitől nem műxött ugyanez sed-ben, de mindegy is. buktam pár órát. köszi ettől függetlenül.
-
lapa
veterán
mittomén mivel mit lehet csinálni, azért vagyok itt. (bocs, csak a hülye helyzet idegesít már, hogy a 21. században ekkora gond egy mezei htm kezelése mindenféle bugok nélkül).
szóval nekem a szimpla "üres sor eltűntetős sed" se műx.
ezt tudom elmondani a fájlról:
lapa@inox:/io$ enca wag.htm -L hungarian
7bit ASCII characters
Mixed line terminators
lapa@inox:/io$most ez jó vagy rossz?
nagyjából odáig jutottam, hogy a fájlba az első komment blokkba rak a seamonkey valami 700 ezer üres sort. vagy legalábbis egy helyre biztos rakott.
előbb megnyitottam gedit-tel, először sírt, hogy nem ismeri a kódolást. mondtam neki, hogy 8859-2. akkor nagy nehezen megnyitotta, sőt még a "-->" -t is megtalálta. akkor fogtam és kijelöltem-kitöröltem a 700 ezer sort. elmentettem, erre a 29 megából lett 52. gyanús, hogy ez nem a duplája, szóval gondolom van minden komment blokkban pár százezer fölös sor.
most azért nem műxenek a sedek, mert nem-utf-8?
már nincs semmilyen igényem, csak tűnjenek el az üres LF és CR LF sorok.
-
lapa
veterán
-
lapa
veterán
üdv. van egy olyan anomáliám, hogy a moron seamonkey berakott az eredetileg 2,2 mb-s htm fileomba 19 mb-nyi felesleges üres sort (LF).
nagyjából semelyik platform semelyik megoldásával nem sikerült eddig megoldani. múltkor már a notepad++ multiline find & replace-e megcsinált egy ugyanilyet, de most se winen, se linuxon nem csinál semmit se (homokóra akármennyi ideig hagyom).
röviden az érdekelne, hogy LF LF LF LF-ből csináljon nekem a shell egy LF-et (magyarul töröljön 3 felesleges sort).
adott esetben LF LF LFCR LF -ből LF is érdekelne.
próbáltam egyelőre más, egyszerűbb dolgokat de sajnos kevés sikerrel. bocs, ha lehet most nem állnék neki guglizni, ha valaki tud egy gyorsat mondani akkor hajrá. köszi.
-
cAby
tag
válasz
Jester01 #958 üzenetére
Áhh értem, köszi a felvilágosítást. Maradok az előbbi megoldásnál inkább.
Már ki is tudtam sed-el szedni ami nem kell oda:
sed -e "s/Cpu(s): //" | sed -e "s/%us,//" | sed -e "s/%sy,//" | sed -e "s/%ni,//" | sed -e "s/%id,//" | sed -e "s/%wa,//" | sed -e "s/%hi,//" | sed -e "s/%si,//" | sed -e "s/%st//"
De csak úgy működik, ha előbb az eredményt elmentem egy cpu.txt-be
aztán az elejére írom, hogy cat cpu.txt | sed .... és így elmentem egy másikba.De így nem, hogy:
top -b -d 1| while read p; do echo $(date +"%T") $p; done | grep Cpu | sed -e "s/Cpu(s): //" | sed -e "s/%us,//" | sed -e "s/%sy,//" | sed -e "s/%ni,//" | sed -e "s/%id,//" | sed -e "s/%wa,//" | sed -e "s/%hi,//" | sed -e "s/%si,//" | sed -e "s/%st//"Ilyet nem lehet, hogy egyből így mentse le? :\
-
Jester01
veterán
Ezek a különböző módban töltött időadatok (user,system,nice, idle, wait, egyebek)
Százalékot úgy kapsz belőle mint ahogy a top is - két egymás utáni értéket kivonsz és osztod a teljes idővel.Mondjuk ha kifejezetten a monitorozás a cél, és nem pedig a script írás, akkor nyilván vannak erre kész megoldások.
-
cAby
tag
válasz
Jester01 #955 üzenetére
Megnéztem akkor amikor mondtad, de egy ilyennel találtam szemben magam:
cpu 199957490 1300639 49153374 7781071864 207319963 25528 845323 0 0Fogalmam sincs mit jelentenek ezek a számok, ill. hogyan formázzam, hogyan kapjak ebből %-os értéket.
Ezért akartam mással megoldani.
De ez a megoldás, amit bambano írt jó lesz. Ha meg ki tudom sed-el szedni ami nem kell oda, akkor tökéletes lesz nekem.
Elhiszem, hogy a másik szebb megoldás lenne, de sajnos nem értek ilyen szinten a dolgokhoz.
-
cAby
tag
Hmm.. tényleg, elő is kaptam régi jegyzeteimet és megtudtam, hogy cat akarmi | sed s/eztcsereld/emerre/ a parancs.
Neki is ugrottam, de nem jön össze eddig még
Ez egy sor:
02:02:38 Cpu(s): 16.8%us, 13.7%sy, 0.0%ni, 7.6%id, 62.0%wa, 0.0%hi, 0.0%si, 0.0%stTehát, le akarom cserélni a "%us, " (szóköz is van) egy szóközre, ugyan így a többi, kiv a %st, mert ott azt csak törölni kellene.
A szóközt azt hogyan kellene jelölni?
Eddig ez votl a próbám, amivel csúnyán megbuktam.
top -b -d 1| while read p; do echo $(date +"%T") $p; done | grep Cpu | sed s / %sy,' ' /' ' -
cAby
tag
Ezt a 2 fogom akkor használni:
nohup iostat -m 1| while read p; do echo $(date) $p; done | grep sde > /tmp/io.txt &
nohup top -b -d 1| while read p; do echo $(date +"%r") $p; done | grep Cpu > /tmp/cpu.txt &Tehát így az eredeti script amit csináltam nem is kell.
Kérdés, hogy a felső 2 parancsot pontosan 1 időben el lehet indítani?
szerk.: Úúú.. a top-os mégsem jó, mert amit kiír az ez:
01:49:48 AM Cpu(s): 7.4%us, 12.0%sy, 0.0%ni, 12.0%id, 68.3%wa, 0.0%hi, 0.3%si, 0.0%st
és így nem tudok statisztikát csinálni. Az értékek mellé nem kellene más, tehát:
7.4%us, helyett csak 7.4 kéne. Ezt gondolom nem lehet kiszedni. :Sszerk.: Lehet, hogy ronda megoldás de Notepad++-ban mentés után replace-szel meg lehet csinálni.
Új hozzászólás Aktív témák
Hirdetés
- Nvidia GPU-k jövője - amit tudni vélünk
- Automata kávégépek
- Kínai és egyéb olcsó órák topikja
- One otthoni szolgáltatások (TV, internet, telefon)
- Asztalos klub
- Microsoft Office és Office 365 topic
- Magisk
- Luck Dragon: Asszociációs játék. :)
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Google Pixel 8a - kis telefon kis késéssel
- További aktív témák...
- Számlás!Steam,EA,Epic és egyébb játékok Pc-re vagy XBox!
- Bitdefender Total Security 3év/3eszköz! - Tökéletes védelem, Most kedvező áron!
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- A Panasonic Toughbook CF-54 i5-5300u i5-6300u TN, IPS touch Budapest, MPL Foxpost
- Dell P2419H P2419Hc Full HD LED IPS 24" + P2719H 27" LCD monitor (vékony keretes)
- HPE Apollo 4200 Gen9 2U rack szerver, 1x E5-2620v4, 64GB RAM, 24x3.5" 2U-ban! ÁFA-s számla, garancia
- Apple iPhone 7 32GB, Kártyafüggetlen, 1 Év Garanciával
- Eredeti Lenovo 300W töltők - ADL300SDC3A
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest