Új hozzászólás Aktív témák
-
bambano
titán
válasz
CPT.Pirk #2327 üzenetére
javaslom az mktemp manualjának olvasgatását
következő lépésként javasolt, hogy specifikus awk-ot használj, mert az awk-k tapasztalat szerint nem egyformák.ha így írtad a paste-t, akkor szerintem az előtte levő awk-kal és az utána levő cat-tal is össze lehet vonni:
awk ... | paste -d ' ' - - >${...}.txtannak nem látom értelmét, hogy a paste-vel kitolod egy temfile-ba, majd azt simán átmásolod a véglegesbe. akkor már mehet rögtön a véglegesbe.
szerk: ha olyan problémád van, hogy a paste-nél megáll a szkript, az egy olyan eset, ami máskor is előfordulhat. más esetekben lehet olyan gond, hogy az előző programnak nincs kimenete, ezért a következő bemenet megakad. ilyenkor érdemes közé tenni egy cat - /dev/null-t.
tehát azt írni, hogy:
awk | cat - /dev/null | paste -d ' ' - - >${...}.txt
de ez nem biztos, hogy erre a konkrét esetre is kell, most nem fogom a konzolon kipróbálni
szerk2: rendszergazdaként futtatott szkriptekben az rm $tempfile annyira nem frankó, csak ha megnézted, hogy pontosan mi is az a file
-
CPT.Pirk
Jómunkásember
válasz
CPT.Pirk #2321 üzenetére
Ez a pipe dolog tényleg hasznos.
Most itt tartok:
for f in $files
do
if [[ $f = *"log."* ]]; then
#bizonyos fájlokat eleve nem nézünk meg
if [[ $f != *".gz"* ]] && [[ $f != *".nmbd"* ]] && [[ $f != *".smbd"* ]]; then
echo "Processing $f..."
egrep "$grepcmd1" "$grepcmd2" "$f" | awk '!/--/' | \
sed -e 's/smbd.*e)//' -e 's/read.*)//' -e 's/, .* //' -e 's/, .* //' -e 's/^.//' | \
perl -ne 'print unless $seen{$_}++' | \
egrep "$grepcmd1" "$grepcmd3" | \
awk '!/--/' > $tempfile
paste -d ' ' - - < $tempfile > $tempfile2 #minden második (elsővel kezdve) sor végéről törli az újsor karaktert, hogy az idő a névvel egy sorba ker$
cat $tempfile2 > ${f##*/}.txt
else
echo "Excludeing $f..."
fi
else
echo "Exludeing $f..."
fi
done
rm $tempfile
rm $tempfile2Jelentősen gyorsabb, de arra még nem jöttem rá, hogy a paste-es sort hogyan kellene beépíteni a pipe folyamatba.
Ennek mintájára próbáltam:
kill $(ps aux | grep 'ython csp_build.py' | awk '{print $2}')
ahol a $-os részre ment az, amit összepipeoltam, de valami nem sikerült és megállt a szkript. -
bambano
titán
válasz
CPT.Pirk #2321 üzenetére
szóval a legfőbb gond, hogy így windowson programoznak.
a unixok legnagyobb előnye, hogy minden fájl, és karakteresen mindent lehet olvasni, írni.
ezért az első, amit javítani kellene, hogy nincs tempfile1 meg tempfile2, hanem egy menetben átmegy minden a parancsokon. ennek a unixos megoldás a csővezeték, pipeline.
tehát: az első parancs olvas egy fájlt, az összes többi nem, az utolsó pedig leteszi egy fájlba az eredményt:egrep ... logfile | sed .... | awk ... | sed >kimenet
a második, hogy a sednek több programot is meg lehet adni egyszerre (a sed programnak hívja a s/... kezdetű paraméterét)
tehát nem sed program1 | sed program2 hanem
sed program1 program2 program3a harmadik, hogy az awk és a sed is tudja, amit az egrep. érdemes lenne minél kevesebb programot használni, mert annál bonyolultabb minden.
-
f_sanyee
senior tag
válasz
CPT.Pirk #2321 üzenetére
Szia,
ezt egy awk vagy sed scripttel meg tudnad oldani. Ezt a konyvet ajanlom: sed & awk, 2nd Edition
-
bambano
titán
válasz
CPT.Pirk #1103 üzenetére
az NR<43 sorba rakj egy printf("#"); utasígást, az END blokk elejére meg egy printf("\n");-t
a zárójeleket is ki lehetne találni úgy, hogy csinálsz az elejére begin blokkot, ott kiiratod, de a pontos vezérlőkarakterekre nem emlékszem fejből (ami csak carriage return-t csinál, line feedet nem), valahogy így:
BEGIN { printf ("[ ]\r["); }
-
bambano
titán
válasz
CPT.Pirk #1065 üzenetére
persze, ahogy ctrl+q-t ki tudtál írni a \x11-gyel, idézőjelet meg aposztrófot is ki lehet írni \x22 meg \x27 a kódjuk, ha nem csalnak az emlékeim.
illetve az eredeti unix filozófia szerint escape-lni kell és akkor jó lesz, tehát ha idézőjelen belül idézőjelet akarsz, akkor \" -t kell írni.
-
bambano
titán
válasz
CPT.Pirk #1057 üzenetére
kis olvasnivaló linuxon soros port kezelés
-
bambano
titán
válasz
CPT.Pirk #1045 üzenetére
biztos vagy benne, hogy gawk-ot használsz? mit mutat a
ls -l /etc/alternatives/awk
?a második pastebinben van a 82. sor:
open("0", O_WRONLY|O_CREAT|O_TRUNC|O_LARGEFILE, 0666) = 3
erről nem tudom, hogy jó-e, itt szerintem /dev/ttyUSB0-nak kellene lennie, hacsak az nem egy link.A substr-t tartalmazó sor végére írj már egy printf "%d\n",NR; -t, hogy lássuk, jól számolja-e a sorokat.
-
bambano
titán
válasz
CPT.Pirk #1031 üzenetére
BEGIN { printf ("\x11")>/dev/ttyUSB0; }
NR<41 { a[NR]=substr($0,0,4); b[NR]=substr($0,4,4); }
END {
printf ("\x11')>/dev/ttyUSB0
for(i=1;i<41;i++) printf ("%d,%d,%f\n",a[i],b[i],log(a[i]/b[i])/log(10));
}kb. ennyi. ezt kirakod egy fájlba, majd gawk -f awkfile /dev/ttyUSB0
-
bambano
titán
-
bambano
titán
válasz
CPT.Pirk #1012 üzenetére
nem jól érted. az xon-t neked kell kiadni awk-ból, annak érkezésekor kezdhet el adni az fpga, és adhat mindaddig, amíg nem kap xoff-ot. tehát a gép felől az fpga felé megy az xonxoff és az fpga felől a gép felé menő forgalmat akasztja meg.
az rts/cts szerintem nem hardveres, de a linux driver kezeli. [link]
-
bambano
titán
válasz
CPT.Pirk #1006 üzenetére
valahol kevered: a és $a is előfordul.
lehet, hogy érdemes lenne eredeti formája szerint bezárójelezni a printf-et:
printf("%d,%d,%f",... ) >>$outputfileigen, ha írsz valamit a kimeneti fájlba >$outputfile alakban, az csonkolni fogja.
viszont ha további feldolgozást fogsz csinálni, akkor a 10-es logaritmust lehet, nem awk-ból kellene csinálnod, nehogy lekésse a beolvasást az awk.
-
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. -
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
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á?
-
-
Jester01
veterán
válasz
CPT.Pirk #876 üzenetére
dc és bc "számológép" programok.
Logaritmus bc-vel például:$ echo "l(2.71)" | bc -l
.99694863489160953206Olvasáshoz legegyszerűbb ha végtelen ciklusban simán pollozod a /dev/ttyUSB0-t és kész.
Lásd még #857, bár nekem parancsot kellett kiküldeni, illetve fix byteot olvasni.
-
dabadab
titán
válasz
CPT.Pirk #871 üzenetére
A /proc/bus/usb/ konyvtarban ott vannak az USB eszkozoket reprezentalo file-okat, azokat tudod bizergalni (megfelelo jogosultsaggal). Tisztan bashbol mondjuk a logaritmus nem fog menni, mar csak azert sem, mert a bash csak egesz szamokkal tud szamolni, szoval ahhoz kenytelen leszel kulso programot hivni (pl. ott a dc, a remek forditott lengyel jelolesevel).
-
Jester01
veterán
válasz
CPT.Pirk #854 üzenetére
Ha nem csak lsusb-vel látszik, hanem ténylegesen soros portként is (pl. /dev/ttyUSB0), akkor igen egyszerűen el lehet ezt követni.
Syslog részlet:
kernel: usb 3-1: new full speed USB device number 29 using ohci_hcd
kernel: usb 3-1: New USB device found, idVendor=067b, idProduct=2303
kernel: usb 3-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
kernel: usbcore: registered new interface driver usbserial
kernel: USB Serial support registered for generic
kernel: usbcore: registered new interface driver usbserial_generic
kernel: usbserial: USB Serial Driver core
kernel: USB Serial support registered for pl2303
kernel: pl2303 3-1:1.0: pl2303 converter detected
kernel: usb 3-1: pl2303 converter now attached to ttyUSB0
kernel: usbcore: registered new interface driver pl2303
kernel: pl2303: Prolific PL2303 USB to serial adaptor driverNekem például hőmérők vannak így bekötve, az értékeket pedig egy ilyen script rész logolta:
while true
do
echo -ne "#03\r" >/dev/ttyUSB0
v=`dd if=/dev/ttyUSB0 bs=42 count=1 2>/dev/null`
d=`date --rfc-3339=seconds -u`
echo "${d:0:16}${v//+/;}" >>temp.txt
sleep 60
done
Új hozzászólás Aktív témák
- Formula-1
- Counter-Strike: Global Offensive (CS:GO) / Counter-Strike 2 (CS2)
- ZIDOO médialejátszók
- Építő/felújító topik
- Synology NAS
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- Fejhallgató erősítő és DAC topik
- Okos Otthon / Smart Home
- Milyen notebookot vegyek?
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- További aktív témák...
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
- Kaspersky, McAfee, Norton, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- Vírusirtó, Antivirus, VPN kulcsok
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- Assassin's Creed Shadows Collector's Edition PC
- Prémium PC házak akár 20-40% kedvezménnyel eladók garanciával, számlával!
- Apple Watch SE 2 44mm, Újszerű, 1 Év Garanciával
- Beszámítás! Sony PlayStation 5 825GB SSD digital konzol garanciával, hibátlan működéssel
- BESZÁMÍTÁS! 16GB (2x8) G.Skill Trident Z RGB 4266MHz DDR4 memória garanciával hibátlan működéssel
- BESZÁMÍTÁS! 4TB Samsung 870 EVO SATA SSD meghajtó garanciával hibátlan működéssel
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest