3

次のような文字列があります。blabla a13724bla-bla244 35%

パーセンテージの前には常にスペースがあることに注意してください。%Linux シェルを使用して、これらの文字列からパーセンテージ数 (したがって、なし) を抽出したいと思います。

4

6 に答える 6

4

GNU grep があると仮定します。

$ grep -oP '\d+(?=%)' <<< "blabla a13724bla-bla244 35%"
35
于 2012-12-21T12:03:40.033 に答える
3

sed を使用:

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

行に複数のパーセンテージがあると予想される場合:

echo blabla 20% a13724bla-bla244 35% | \
   sed -e 's/[^%0-9 ]*//g;s/  */\n/g' | sed -n '/%/p'
于 2012-12-21T07:13:40.230 に答える
1

これを試すことができます

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

注: 入力は常にこの形式であり、パーセンテージはスペースで区切られた 3 番目のトークンであると仮定します。

于 2012-12-21T06:59:44.223 に答える
0

常に多数の連続する列がある場合は、正規表現の代わりに awk を試してみてください。

cat file.txt |awk '{print $3}'  |cut -d "%" -f 1

このコードでは、3 番目の列を取得します。

于 2012-12-21T07:11:59.010 に答える
0

次の正規表現を使用します。

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

シェルで必要な場合は、sed またはこの perl ワンライナーを使用できます。

echo "blah 35%" | perl -pe "s/.*\s(\d{1,3})%/\1/g"
35
于 2012-12-21T06:59:01.707 に答える
0

次の正規表現を試すことができます。

/\s(\d+%)/
于 2012-12-21T06:58:18.603 に答える