150.8
이 문자열 을 잘라 내고 싶습니다 temp1: +150.8°F (crit = +197.6°F)
. 다음은 명령을 사용하여 온도를 기록하는 스크립트입니다 sensors
.
#!/bin/bash
now=$(date +"%m_%d_%Y") # get current date
now_excel=$(date +"%D %H:%M") # get current date & time in excel format
file_dir="/var/www/html/logs"
file="$file_dir/logging_$now.csv" # backup name and directory
temp=$(sensors -Af | sed -n '2{p;q}') # temp1: +150.8°F (crit = +197.6°F)
#temp_num="$temp" | sed 's/+\(.*\)°/\1/g'
# add line to csv
printf "$now_excel" >> "$file"
printf ", " >> "$file"
printf "$temp" >> "$file"
printf "\n" >> "$file"
find "$file_dir"/* -mtime +3 -exec rm {} \; # remove any backup files older than 3 days
exit 0
다음은 한 가지 방법입니다.
$ sensors -Af | sed -n '2{s/°.*//; s/[^+-]*//; p; q}'
+105.8
또는 명령 대체 내에서 동일한 명령을 사용하여 출력을 변수로 캡처합니다.
temp=$(sensors -Af | sed -n '2{s/°.*//; s/[^+-]*//; p; q}')
s/°.*//
도 기호의 첫 번째 항목 °
및 그 뒤에있는 모든 항목을 제거합니다 . s/[^+-]*//
에하지만 첫 번째 포함하지 않음까지 모든 것을 제거 +
또는 -
.
$ sensors -Af | awk 'NR==2{print $3+0; exit;}'
105.8
우리가 원하는 숫자는 세 번째 필드에 있습니다. 세 번째 필드에는 문자 (예 :)가 포함되어 있으므로 여기에 +105.8°F
추가 0
합니다. 이것은 awk가 그것을 우리가 원하는 숫자로 변환하도록합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다