4 Stimmen

Regulärer Ausdruck zum Extrahieren eines Prozentsatzes

Ich habe Zeichenfolgen wie folgt: blabla a13724bla-bla244 35%

Beachten Sie, dass immer ein Leerzeichen vor dem Prozentzeichen vorhanden ist. Ich möchte die Prozentsatznummer (also ohne das %) aus diesen Zeichenfolgen mit der Linux-Shell extrahieren.

5voto

glenn jackman Punkte 221248

Angenommen, Sie haben GNU grep:

$ grep -oP '\d+(?=%)' <<< "blabla a13724bla-bla244 35%"
35

3voto

perreal Punkte 89574

Mit sed:

echo bla bla a13724bla-bla244 35% | sed 's/.*[ \t][ \t]*\([0-9][0-9]*\)%.*/\1/'

Wenn Sie mehrere Prozentwerte in einer Zeile erwarten:

echo bla bla 20% a13724bla-bla244 35% | \
   sed -e 's/[^%0-9 ]*//g;s/  */\n/g' | sed -n '/%/p'

1voto

Raghuram Punkte 3887

Sie können dies versuchen

echo "blabla a13724bla-bla244 35%" | cut -d' ' -f3 | sed 's/\%//g'

HINWEIS: Die Annahme ist, dass die Eingabe immer in diesem Format vorliegt und das Prozentzeichen das 3. Token ist, das durch Leerzeichen getrennt ist.

0voto

Aziz Shaikh Punkte 15807

Sie können diese regulären Ausdruck ausprobieren:

/\s(\d+%)/

0voto

mvp Punkte 101988

Verwenden Sie diesen regulären Ausdruck:

\s(\d{1,3})%

Wenn Sie es in der Shell benötigen, können Sie sed oder diese Perl-One-Liner verwenden:

echo "blah 35%" | perl -pe "s/.*\s(\d{1,3})%/\1/g"
35

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X