コマンド出力で数字を見つけて変数として保存する

コマンド出力で数字を見つけて変数として保存する

Bashスクリプトからコマンド出力からいくつかの数値を取得し、変数に保存したいと思います。コマンド出力の例:

25 results [22 valid, 2 invalid, 1 undefined]

前のコマンド出力の4つの数字を名前付き変数に保存したいと思いますresults, valid, invalid, undefined

ベストアンサー1

複数の個別の値を保存したいので、それを配列に保存するとします。

$ str='25 results [22 valid, 2 invalid, 1 undefined]'

$ readarray -t arr < <( grep -E -o '[0-9]+' <<<"$str" )

これにより、出力grepが名前付き配列に読み込まれますarr。このgrepコマンドは、$str拡張正規表現を文字列と一致させ、各一致を抽出して、[0-9]+独自の行で見つかった個々の数値を出力します。grep「here-string」から文字列を読み込み、手続き型置換を使用してreadarray結果を読み込みます。grep

この値は次のように使用できます。

$ printf 'value: %s\n' "${arr[@]}"
value: 25
value: 22
value: 2
value: 1

または、個々の値を表示するには、などを使用します"${arr[0]}""${arr[1]}"配列には"${#arr}"値が含まれています。

results=${arr[0]}
valid=${arr[1]}
invalid=${arr[2]}
undefined=${arr[3]}

読むまっすぐコマンドから:

readarray -t arr < <( mycommand | grep -E -o '[0-9]+' )

おすすめ記事