次のような文字列があります。blabla a13724bla-bla244 35%
パーセンテージの前には常にスペースがあることに注意してください。%
Linux シェルを使用して、これらの文字列からパーセンテージ数 (したがって、なし) を抽出したいと思います。
GNU grep があると仮定します。
$ grep -oP '\d+(?=%)' <<< "blabla a13724bla-bla244 35%"
35
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'
これを試すことができます
echo "blabla a13724bla-bla244 35%" | cut -d' ' -f3 | sed 's/\%//g'
注: 入力は常にこの形式であり、パーセンテージはスペースで区切られた 3 番目のトークンであると仮定します。
常に多数の連続する列がある場合は、正規表現の代わりに awk を試してみてください。
cat file.txt |awk '{print $3}' |cut -d "%" -f 1
このコードでは、3 番目の列を取得します。
次の正規表現を使用します。
\s(\d{1,3})%
シェルで必要な場合は、sed またはこの perl ワンライナーを使用できます。
echo "blah 35%" | perl -pe "s/.*\s(\d{1,3})%/\1/g"
35
次の正規表現を試すことができます。
/\s(\d+%)/