Portál AbcLinuxu, 1. listopadu 2025 06:07
/^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.