sed-Extrakt Ziffern
Ich versuche, zu extrahieren Ziffern mit sed:
echo hgdfjg678gfdg kjg45nn | sed 's/.*\([0-9]\+\).*/\1/g'
aber das Ergebnis ist:
5
Wie zu extrahieren: 678 45?
Vielen Dank im Voraus!
- Toller Artikel über sed ~hier~ !
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist, dass die
.
im.*
passen Ziffern sowie nicht-Ziffern, und es hält auf passende, so lange wie möglich-das ist, solange es eine Ziffer Links nicht verbrauchten, die sich mit dem[0-9]
.Anstelle von Ziffern extrahieren, löschen Sie einfach die nicht-Ziffern:
oder sogar
Können Sie mit grep mit der option-o für das:
Oder verwenden Sie
tr
:tr -d [:alpha:]
zu handhaben Großbuchstaben, auch..*
imsed
ist gierig. Und es gibt keinenon-greedy
option AFAIK.(Sie müssen verwenden
[^0-9]*
in diesem Fall für die non-greedy-matching. Dies funktioniert aber nur einmal, so erhalten Sie nur678
ohne45
.)Wenn Sie müssen, verwenden Sie nur
sed
es nicht leicht sein würde, um das Ergebnis zu erhalten.Ich empfehle die Verwendung von gnu ' s
grep
Wenn Sie wirklich wollen, zu bleiben, um zu
sed
wäre dies eine von vielen möglichen Antworten.