+
はを除き、+
が機能していないので、16972 1684 173
を印刷する必要があります。我々は数字のカンマで区切られたペアの空白で区切られた配列であるとnumbers
のフォーマットに依存することができますと仮定bashで数字を置き換えて検索
#!/bin/bash
numbers="16972,4 1684,15556 173,2"
echo $numbers
echo ${numbers//,[[:digit:]]+/}
+
はを除き、+
が機能していないので、16972 1684 173
を印刷する必要があります。我々は数字のカンマで区切られたペアの空白で区切られた配列であるとnumbers
のフォーマットに依存することができますと仮定bashで数字を置き換えて検索
#!/bin/bash
numbers="16972,4 1684,15556 173,2"
echo $numbers
echo ${numbers//,[[:digit:]]+/}
あなたはextglob
シェルオプションを有効にした場合、パターンの1回以上の繰り返しに一致することができます。
$ shopt -s extglob
$ echo "${numbers//,+([0-9])/}"
16972 1684 173
はBashのマニュアルのPattern Matchingを参照してください。
あなたは `代わりsed
$ sed -r 's/,[0-9]+//g' <<< $numbers
16972 1684 173
良い答え。 @krish、bashのパラメータ展開のトリックは正規表現を使わず、シェルのパターンを使っていることに注意してください。ユージーンの答えのリンクを読んでください。 –