GNU/Linux >> Linux の 問題 >  >> Linux

置換するのではなく、Bash スクリプトで正規表現の一致を返す

echo "TestT100String" | sed 's/[^0-9]*\([0-9]\+\).*/\1/'

echo "TestT100String" | grep -o  '[0-9]\+'

結果を配列に入れるために使用する方法は、実際のデータを取得する方法によって多少異なります。あなたの質問には、あなたをうまく導くことができる十分な情報がありません。ただし、ここに 1 つの方法があります:

index=0
while read -r line
do
    array[index++]=$(echo "$line" | grep -o  '[0-9]\+')
done < filename

別の方法は次のとおりです:

array=($(grep -o '[0-9]\+' filename))

二重角括弧 [[ ]] を使用して、純粋に bash でこれを行うことができます 結果を BASH_REMATCH という配列に格納するテスト演算子 :

[[ "TestT100String" =~ ([0-9]+) ]] && echo "${BASH_REMATCH[1]}"

Linux
  1. Bashスクリプトをデバッグする方法は?

  2. Bash Echoコマンドライン自体で実行されるコマンドライン(スクリプトではない)?

  3. 一致する`"‘を探しているときに予期しないEof – Bashスクリプト?

  1. Bashスクリプトで1行ずつ読む

  2. bash スクリプトでの ENTER キー押下のシミュレート

  3. bash スクリプト ループ内の cat ステートメントの出力を出力する

  1. Bash シェル スクリプト - フラグをチェックしてその値を取得する

  2. スクリプト内の bash シェル スクリプトおよび関数の変数スコープ

  3. ファイルがbashスクリプトの特定のディレクトリに存在するかどうかを確認するには?