Linux => Konsole => sed

  • Hallo,


    in einem meiner Scripte rechne ich mit "bc". Der hat den Nachteil, dass er bei Werten zwischen 0 und 1 die führende 0 nicht übergibt (.555 statt 0.555).


    Über Pipe ( | ) schicke ich den Wert an sed:

    Code
    1. sed 's/^\./0./'

    Und schon wird aus ".555" eine "0.555". Soweit so gut.


    Aber das klappt nicht mit Minuswerten, wie z.B. "-.555"


    Das klappt nur, wenn ich es so mache:

    Code
    1. sed 's/^\-./-0./'

    Nur wie kann ich beides erzwingen?


    Kleiner Nachtrag:

    Wenn ich es so mache:

    Code
    1. echo "-.555" | sed 's/^\./0./' | sed 's/^\-./-0./'

    klappt es. Aber zweimal sed hintereinander ist wohl ein Frevel, oder?


    Eine Idee wie ich das zusammenlege?

    Meine Hardware@home: Fritzbox 7490, 3xFritzDect 200, 1xSonOff S20 u. Gosund SP1 mit Tasmota, Syno NAS, Raspberry Pi 3B f. PiHole, Docker, Portainer

    2 Mal editiert, zuletzt von Marc ()

  • Aber zweimal sed hintereinander ist wohl ein Frevel, oder?

    Kommt drauf an wie man's macht ;)


    Du kannst mehrere sed commands mit ";" verketten.

    echo "-.555" | sed 's/^\./0./; s/^\-./-0./'


    "FREVEL" ist es mit der Pipe auch nicht ... lediglich nicht so elegant. Zählen tut eh nur was hinten heraus kommt :)

    Tasmota 6.6.0 - Arduino-IDE - 1.8.7

    Sonoff-Basic / Sonoff-RF / Sonoff-Touch / Sonoff S20 / PowStro / HomeMagic / Sonoff-RF-Bridge mit diversen 433MHz RF Sender/Empfänger / Shelly_1 / ESP-WiFi-Dimmer

    Sensoren: BME280/BMP280/HC-SR501/HC-SR04/ACS712

    mosquitto/bash/html/cgi auf RPI 2B+/Sprachsteuerung via IFTTT/3xGoogle-Home-Mini