Portál AbcLinuxu, 11. května 2025 06:36
/^11 / { print t($5*180/3.141592653589) "\n" t($6*180/3.141592653589); }
Současný příkaz:
/^$/ { flag=0; next; }
/D Format/ { flag=0; next; }
/F Format/ { flag=1; next; }
/^ 9 / { print t($5) "\n" t($6); }
/^10 / { print t($5) "\n" t($6); }
/^11 / { print t($5*180/3.141592653589) "\n" t($6*180/3.141592653589); }
/^15 / { print t($5*100) "\n" t($6*100); }
/^16 / { print t($5) "\n" t($6); }
/^20 / { print t($5*10) "\n" t($6*10); }
/^23 / { print t($5) "\n" t($6); }
/^24 / { print t($5) "\n" t($6); }
function t(n, s) {
s=index(n,".");
return (s ? substr(n,1,s+6) : n);
}
Jak napsat více vstupních souborů?
awk -f code dcout1.active dcout2.active dcout3.active..... Jde to lépe?
Proč mám špatně vyhraněnou tu oblast? Vypisují se tam i hodnoty z následující tabulky.
Děkuji moc
/^$/ { flag=0; next; }
/D Format/ { flag=0; next; }
/F Format/ { flag=1; next; }
/^26 / { next; }
flag && /^ *[0-9]/ { print t($5) "\n" t($6); }
function t(n, s) {
s=index(n,".");
return (s ? substr(n,1,s+6) : n);
}
a to
43.685030
0.106608
0.080182
0.000675
2.734748
0.011468
0.219356
0.001769
83.864830
0.115873
2.250249
0.004792
3.936308
0.005290
7.491860
0.009210
ale potřeboval bych tam zahrnout to počítání.
# promenna FS urcuje oddelovac sloupcu, v mem pripade je to ; # promenna OFMT urcuje pocet desetinnych mist a mezery mezi cisly echo " Aritmeticky prumer dat od $USERDATE3 $USERTIME1 do $USERDATE4 $USERTIME2" >/datalog_bin/prumer/ctiprumer.$$ awk --use-lc-numeric 'BEGIN { FS = " "; print " Merici ustredna Difuse (OS GNU/Linux with Tux Inside)" } { s=s+$2; s1=s1+$3; s2=s2+$4; s3=s3+$5; s4=s4+$6; s5=s5+$7; s6=s6+$8; s7=s7+$9;\ s8=s8+$10; s9=s9+$11; s10=s10+$12; s11=s11+$13; s12=s12+$14; s13=s13+$15; s14=s14+$16; s15=s15+$17 } END { OFMT= "%3.2f "; print "" printf("%-15s %6.2f %4s %-40s\n"," CHANNEL_0", s/NR+0.00001, "%RH ", "Prumerna_vlhkost_Skrin_1") printf("%-15s %6.2f %4s %-40s\n"," CHANNEL_1", s1/NR+0.00001, "°C ", "Prumerna_teplota_Skrin_1") printf("%-15s %6.2f %4s %-40s\n"," CHANNEL_2", s2/NR+0.00001, " ", " ") printf("%-15s %6.2f %4s %-40s\n"," CHANNEL_3", s3/NR+0.00001, " ", " ", " ") printf("%-15s %6.2f %4s %-40s\n"," CHANNEL_4", s4/NR+0.00001, "%RH ", "Prumerna_vlhkost_Skrin_2") printf("%-15s %6.2f %4s %-40s\n"," CHANNEL_5", s5/NR+0.00001, "\260C ", "Prumerna_teplota_Skrin_2") printf("%-15s %6.2f %4s %-40s\n"," CHANNEL_6", s6/NR+0.00001, " ", " ") printf("%-15s %6.2f %4s %-40s\n"," CHANNEL_7", s7/NR+0.00001, " ", " ") printf("%-15s %6.2f %4s %-40s\n"," CHANNEL_8", s8/NR+0.00001, "%RH ", "Prumerna_vlhkost_Skrin_3") printf("%-15s %6.2f %4s %-40s\n"," CHANNEL_9", s9/NR+0.00001, "\260C ", "Prumerna_teplota_Skrin_3") printf("%-15s %6.2f %4s %-40s\n"," CHANNEL_10", s10/NR+0.00001, " ", " ") printf("%-15s %6.2f %4s %-40s\n"," CHANNEL_11", s11/NR+0.00001, " ", " ") printf("%-15s %6.2f %4s %-40s\n"," CHANNEL_12", s12/NR+0.00001, "%RH ", "Prumerna_vlhkost_okoli") printf("%-15s %6.2f %4s %-40s\n"," CHANNEL_13", s13/NR+0.00001, "\260C ", "Prumerna_teplota_okoli") printf("%-15s %6.2f %4s %-40s\n"," CHANNEL_14", s14/NR+0.00001, "kPa ", "Prumerny_tlak_vzduchu") printf("%-15s %6.2f %4s %-40s\n"," CHANNEL_15", s15/NR+0.00001, " ", " ")}' \ < /datalog_bin/prumer/doprumeru.dat.$$ >>/datalog_bin/prumer/ctiprumer.$$Výstup je takový:
CHANNEL_0 59,91 %RH Prumerna_vlhkost_Skrin_1 CHANNEL_1 22,71 °C Prumerna_teplota_Skrin_1 CHANNEL_2 0,00 CHANNEL_3 0,00 CHANNEL_4 52,60 %RH Prumerna_vlhkost_Skrin_2 CHANNEL_5 23,08 `C Prumerna_teplota_Skrin_2 CHANNEL_6 0,00 CHANNEL_7 0,00 CHANNEL_8 73,46 %RH Prumerna_vlhkost_Skrin_3 CHANNEL_9 22,68 `C Prumerna_teplota_Skrin_3 CHANNEL_10 0,00 CHANNEL_11 0,00 CHANNEL_12 42,59 %RH Prumerna_vlhkost_okoli CHANNEL_13 21,30 `C Prumerna_teplota_okoli CHANNEL_14 99,10 kPa Prumerny_tlak_vzduchu CHANNEL_15 0,00Více vstupních souborů:
hlavicka="/datalog_bin/tlak-vzduchu-html/hlavicka" last200csv="/datalog_bin/tlak-vzduchu-html/200.csv" paticka0="/datalog_bin/tlak-vzduchu-html/paticka0" paticka="/datalog_bin/tlak-vzduchu-html/paticka" { #Start podminky if (hlavicka == 1) #Pokud je promenna hlavicka=1, tiskni soubor1 (hlavicka) print if (hlavicka == 2) #Pokud je promenna hlavicka=2, uprav soubor2 (200.csv) { #Start programu - uprav soubor2 split($18, datum, "[\t -]") $18 = datum [3] "." datum [2] "." datum [1] " " datum [4] #Vypocet relativniho tlaku vzduchu AbsPress = $16 #Absolutni tlak v kPa ElevationDifuse = "217" #Nadmorska vyska v m GravConst = "9,80665" #Isaac Newton GasConst = "287,04" #Merna plynova konstanta R = 287,04 J/K AverTempDifuse = $15 + (ElevationDifuse * "0,0025") RelPressDifuse = AbsPress/exp(-ElevationDifuse * GravConst/(GasConst * ( "273,15" + AverTempDifuse ))) * 10* "1,0012" format1 = "%s ""\n" format2 = "%.2f °C ""\n" format3 = "%.3f kPa ""\n" format4 = "%.2f HPa ""\n" if ($0 !~ /[a-z]/) #V datech je radek s textem, ktery musim odfiltrovat { printf "" "\n" printf (format1 format2 format3 format4, $18, $15, $16, RelPressDifuse "\n") print " " "\n" } else { next } } #Stop programu if (hlavicka == 3) #Pokud je promenna hlavicka=7, print tabletty1 { print } { if (hlavicka == 4) #Pokud je promenna hlavicka=3, print paticka0 print } { if (hlavicka == 5) #Pokud je promenna hlavicka=3, print aktualnihodnoty print } { if (hlavicka == 6) #Pokud je promenna hlavicka=3, print paticka print } }' hlavicka=1 "$hlavicka" hlavicka=2 "$last200csv" hlavicka=3 "$tabletty1" hlavicka=4 "$paticka0" hlavicka=5 "$aktualnihodnoty" hlavicka=6 "$paticka" |tee \ "$destination1" "$destination2" >/dev/null done
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.