Linux: wie man die Anzahl (n) von String erfasst

374
enodmilvado

Ich verwende die folgende Syntax, um nur die Nummer des Host-Rechners zu erfassen

echo machineLinux05 | sed s'/\./ /g' | awk '' | sed 's/[^0-9]//g'  05 

Dieser Weg ist aber nicht so elegant. Gibt es eine weitere kurze Alternative, um die Nummer aus der Zeichenfolge zu erfassen?

0
Was ist der Zweck von `sed s '/\./ / g' | awk '' `? In Ihrem Beispiel bewirkt keiner dieser Befehle etwas. John1024 vor 6 Jahren 1
Der Zweck ist, falls der Hostname auch den Domänennamen als machineLinux05.FG.com hat enodmilvado vor 6 Jahren 0
`tr -cd '[0-9]' <<<" machineLinux05 "` Cyrus vor 6 Jahren 2
`echo machineLinux05.FG, com | grep -o '[0-9] \ +' `funktioniert ebenfalls. Paulo vor 6 Jahren 1

2 Antworten auf die Frage

1
Mureinik

Sie könnten einfach die erste loswerden sedund awksie sind sinnlos:

$ echo machineLinux05 | sed 's/[^0-9]//g' 
Falls wir auch die Domain als machineLinux05.FG, com haben, können Sie die Antwort bitte aktualisieren enodmilvado vor 6 Jahren 0
@enodmilvado Dies druckt 05 auch mit einem vollständig qualifizierten Maschinennamen Mureinik vor 6 Jahren 1
0
AnFi

Versuchen Sie den folgenden Einzeiler:

echo machineLinux05.FG.com | perl -pe 's/\..*$//;s/[^0-9\n]+//g' 
Falls wir auch die Domain als machineLinux05.FG, com haben, können Sie die Antwort bitte aktualisieren enodmilvado vor 6 Jahren 0
`s /\..*$//` entfernt den ersten Punkt und alle Zeichen danach. AnFi vor 6 Jahren 0