Hilfe bei awk. Nur bestimmte zeichen löschen

Bash, Shell, PHP, Python, Perl, CGI
Vir2ell
Posts: 1
Joined: 2015-04-30 14:06

Hilfe bei awk. Nur bestimmte zeichen löschen

Post by Vir2ell » 2015-04-30 14:15

Hallo,

ich bin relativ neu in der Szene und habe mir einen Raspberry zugelegt mit dem ich die Temperatur auslesen kann.
Sobald die Temperatur zu hoch wird soll er mich über ein anderes Programm warnen, aber das ist ein anderes Thema.

Mein Problem ist folgendes:

Wenn ich die Temperatur auslesen möchte erhalte ich immer

"Found 1 devices
Device #0: 28.4°C 83.2°F"

als Ausgabe. An sich ist das auch alles in Ordnung. Nun muss ich aber nur einen gewissen Teil davon haben. Nämlich genau die 28,4.

In meinem Script kommt der Teil vor:

temp=`sudo /usr/local/bin/temper-poll | tail -n 1 | awk -F" " '{print $3}'`

Soweit klappt auch alles. Die erste Zeile wird gelöscht und ich erhalte nur den Wert an dritter Stelle, nämlich genau die 28,4°C.
Nun ist die Frage wie bekomme ich das °C weg?

Ich habe es schon mit
IFS='°'
temp=`awk {print $0} < temp`
versucht, aber irgendwie führt das alles zu keinem Erfolg.

Der komplette Code lautet:

Code: Select all

#!/bin/bash
while true
do
temp=`sudo /usr/local/bin/temper-poll | tail -n 1 | awk -F" " '{print $3}'`
IFS='°'
temp=`awk {print $0} < temp`
echo $temp >>Temperatur.txt
sleep 60
done



Weiß jemand von euch Rat?

User avatar
Joe User
Project Manager
Project Manager
Posts: 11583
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Hilfe bei awk. Nur bestimmte zeichen löschen

Post by Joe User » 2015-04-30 14:57

Versuchs mal mit:

Code: Select all

#!/bin/bash
while true
do
  sudo /usr/local/bin/temper-poll | awk '/^Device #0/ {print $3}' | sed -e 's/°C//' >> Temperatur.txt
  sleep 60
done

Ist zwar quick&dirty, sollte aber erstmal funktionieren.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.