假設我有一個字符串是這樣的:如何僅從字符串中獲取數字?
blah=-Xms512m
我想要的輸出512
。
我知道我可以使用grep
得到它在Linux上是這樣的: echo $blah | grep -o -e [0-9]\\+
但是,這並不對Solaris
工作。
任何漂亮的解決方案,以便在Linux和Solaris上兼容? 或至少在Solaris上?
假設我有一個字符串是這樣的:如何僅從字符串中獲取數字?
blah=-Xms512m
我想要的輸出512
。
我知道我可以使用grep
得到它在Linux上是這樣的: echo $blah | grep -o -e [0-9]\\+
但是,這並不對Solaris
工作。
任何漂亮的解決方案,以便在Linux和Solaris上兼容? 或至少在Solaris上?
I F你知道的數字將一起這樣的:
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
優秀。非常感謝。 – pavanlimo 2010-09-16 11:20:16
如果你想完全地蠻力,請嘗試使用TR:
echo "blah=-Xms512m" | tr -c -d '[0-9]'
+1。這個解決方案看起來不錯。謝謝。 – pavanlimo 2010-09-16 11:20:54
問題不在於它在Solaris上不起作用,問題是(可能)您在Solaris上使用的grep不支持-o。但是grep是這個錯誤的工具。使用tr。 – 2010-09-16 15:44:50
我同意。這就是我的意思。 – pavanlimo 2010-09-16 17:16:04