sed Ziffern extrahieren

7

Ich versuche Ziffern mit sed zu extrahieren:

%Vor%

aber das Ergebnis ist: 5 Wie extrahiert man: 678 und 45? Vielen Dank im Voraus!

    
Ned 12.09.2011, 18:13
quelle

4 Antworten

12

Das Problem ist, dass . in .* sowohl Ziffern als auch Nicht-Ziffern abgleicht und so lange wie möglich übereinstimmt - das ist so lange, wie es eine unverbrauchte Ziffer gibt, die übereinstimmen kann die [0-9] .

Anstatt Zahlen zu extrahieren, löschen Sie einfach Nicht-Ziffern:

%Vor%

oder sogar

%Vor%     
Henning Makholm 12.09.2011 18:18
quelle
6

Sie können grep mit der Option -o dafür verwenden:

%Vor%     
Victor Vasiliev 12.09.2011 18:19
quelle
3

Oder verwenden Sie tr :

%Vor%     
Fredrik Pihl 12.09.2011 20:26
quelle
1

.* in sed ist gierig. Und es gibt kein non-greedy Option AFAIK.
(Sie verwenden müssen [^0-9]* in diesem Fall für nicht-gieriges Matching. Das funktioniert aber nur einmal, so dass Sie nur 678 ohne 45 erhalten werden.)

Wenn Sie nur sed verwenden müssen, ist es nicht einfach, das Ergebnis zu erhalten.
Ich empfehle, gnus grep

zu verwenden %Vor%

Wenn Sie wirklich bei sed bleiben möchten, wäre dies eine von vielen möglichen Antworten.

%Vor%     
plhn 31.05.2017 05:23
quelle

Tags und Links