代码之家  ›  专栏  ›  技术社区  ›  pavanlimo

如何仅从字符串中获取数字?

  •  0
  • pavanlimo  · 技术社区  · 16 年前

    blah=-Xms512m

    我要输出为 512 .

    grep 在Linux上,如下所示: echo $blah | grep -o -e [0-9]\\+ 但这对我没用 Solaris

    或者至少在Solaris上?

    2 回复  |  直到 16 年前
        1
  •  3
  •   paxdiablo    16 年前

    pax> echo 'blah=-Xms512m' | sed 's/[^0-9]//g'
    512
    

    它基本上用零替换所有非数字字符。当然,它不会做明智的事情:

    pax> echo 'blah77=-Xms512m' | sed 's/[^0-9]//g'
    77512
    

    但是,如果你只有一个号码就行了。

    pax> echo 'blah77=-Xms512m' | sed -e 's/^[^0-9]*//' -e 's/[^0-9].*$//'
    77
    

    最后:

    pax> echo 'blah77=-Xms512m' | sed -e 's/[^0-9]*$//' -e 's/^.*[^0-9]//'
    512
    
        2
  •  3
  •   Callie J    16 年前

    echo "blah=-Xms512m" | tr -c -d '[0-9]'