So greppen Sie jede beliebige Ziffer aus einem Satz

So greppen Sie jede beliebige Ziffer aus einem Satz

Können Sie mir beim Greping helfen? Ich habe ein:

variable="RMN quota:        0 bytes"

Und

variable="RMN quota:        1.56 bytes"

Die Ziel-ID für die Ausgabe: 0 oder 1,56.

Was wird dafür grep?

Antwort1

POSIX:

n=${variable% bytes} # strip the trailing " bytes"
n=${n##*[[:blank:]]} # strip the leading part up to the rightmost blank

Antwort2

Das scheint zu funktionieren:

grep -Eo '[0-9]+(\.[0-9]+)?' inputfile  

Wenn Sie den Wert einer Shell-Variablen und nicht den Inhalt einer Datei prüfen, können Sie Folgendes tun:

echo "$variable" | grep -Eo '[0-9]+(\.[0-9]+)?'

Antwort3

Da Sie Bash haben:

tr -d -c 0-9. <<<$variable

(würde auch in Zsh funktionieren).

verwandte Informationen