-1
私はcat
のような数字を持っています: "(number1、number2)" 2つの異なる変数に値を分割したいと思います。SH/BASHを使用して変数を2つに分ける
私はcat
のような数字を持っています: "(number1、number2)" 2つの異なる変数に値を分割したいと思います。SH/BASHを使用して変数を2つに分ける
単一のラインでそれを行うために迅速かつ汚い方法はgrep
を使用することです:
read -r var1 var2 < <(grep -o '[0-9]*' file.txt)
外部プログラムを使用して(それゆえ高速である)しないより堅牢な方法$BASH_REMATCH
を使用することです。
if [[ "$(<file.txt)" =~ ^\((.*),(.*)\)$ ]]; then
var1="${BASH_REMATCH[1]}"
var2="${BASH_REMATCH[2]}"
fi
この方法では基本的な考え方は、我々は("$(<file.txt)"
で)文字列にファイルの内容を読み、私たちはすぐに(=~
オペレータとの)正規表現に対して、その文字列をテストすることです。正規表現には2つのキャプチャグループが含まれ、後で$BASH_REMATCH
配列から取得します。正規表現は、文字列の先頭と末尾にある(
と)
を無視してグループを抽出し、それらを区切る,
を見つけます。
'read -r line
@gniourf_gniourfそのアプローチの利点は何ですか?あなたは一行を読むことができますか? – redneb
もう一つのすばらしい方法は、 'IFS = '(、)' -r _ var1 var2