2017-10-02 15 views
0

bashスクリプトでは、コマンドライン入力を英数字で受け取ります。 例:D7,12D これらの値を変数に代入したいが、数値のみを代入したい。上記の例の値で、それは私がこれは、Linux、UNIXサーバの両方のために働く必要がありますしたいunixの変数に数値のみを代入する

echo "D7" |grep -o '[0-9]*' 

ことによって行うことができ、Linuxで7と12

として割り当てる必要があります。上記のコマンドはsolarisボックスでは機能しません。これは直接あなたの質問に答えていませんが助けを

おかげ

〜Ankitは

+1

[GNU grep](https://unix.stackexchange.com/a/66416/52050)が必要です。 Oracleがそれを変更しない唯一の理由(AFAIK)は、既存のSolarisの動作を破るためです。次に、AIX、HP-UX、BSD、Minixで試してみましょう。がんばろう! –

+0

文字は常に接尾辞または接頭辞に限定されていますか、 '14D7'のような値を得ることができますか?' 14'、 '7'、または' 147'として扱われるべきですか? – chepner

答えて

2

についてgrep異なる環境で、あなたはこのためにsedを使用することができます。

echo "D7" | sed 's/[^0-9]//g' 

s/[^0-9]//gは交換してください「と言います何も数字ではないもの "

+0

まあ、確か。あなたもそれをすることができます。しかし、OPは一貫していないgrepの動作を求めていました。 :) –

+0

@ElliottFrischああ!私はこれまでにそれを読まなかった。私はいつもソリューションに飛び込む前に、すべての指示を読んでいないため、学校で問題を起こしました。私は 'sed'がsolarisやgrepのgrepの奇妙な実装に代わるものを提供するかもしれないので、私はこれをここに残すべきだと感じています。 – JNevill

+0

ありがとうございました!このソリューションは私のために働いた。 –

関連する問題