Linuxで実行するshスクリプトにおいて、特定のパターンの文字列(例:COUNT=1000など)から具体的な数値を抽出するには、grepコマンドとsedコマンド、またはawkコマンドを使用するのが一般的です。
以下に具体例を示します。これは入力される文字列から「COUNT=XXXX」の形式の数値を抽出するスクリプトです。
方法1: grepとsedを使用する方法
#!/bin/sh
# 入力文字列
input_string1="aasadasdas COUNT=1000"
input_string2="aasadasdas AAA COUNT=2000"
# 数値を抽出する関数
extract_count() {
echo "$1" | grep -o 'COUNT=[0-9]\+' | sed 's/COUNT=//'
}
# 入力文字列から数値を抽出
count1=$(extract_count "$input_string1")
count2=$(extract_count "$input_string2")
# 結果を表示
echo "Count from input_string1: $count1" # 出力: Count from input_string1: 1000
echo "Count from input_string2: $count2" # 出力: Count from input_string2: 2000
方法2: awkを使用する方法
#!/bin/sh
# 入力文字列
input_string1="aasadasdas COUNT=1000"
input_string2="aasadasdas AAA COUNT=2000"
# 数値を抽出する関数
extract_count() {
echo "$1" | awk -F 'COUNT=' '{print $2}'
}
# 入力文字列から数値を抽出
count1=$(extract_count "$input_string1")
count2=$(extract_count "$input_string2")
# 結果を表示
echo "Count from input_string1: $count1" # 出力: Count from input_string1: 1000
echo "Count from input_string2: $count2" # 出力: Count from input_string2: 2000
説明
方法1: grepとsedを使用
grep -o 'COUNT=[0-9]\+':
-oオプションを使って、指定したパターンにマッチする部分だけを出力します。'COUNT=[0-9]\+'は正規表現で、「COUNT=」に続く1つ以上の数字にマッチします。
sed 's/COUNT=//':
sedを使って「COUNT=」の部分を空文字に置換します。
方法2: awkを使用
awk -F 'COUNT=' '{print $2}':
-F 'COUNT='はフィールドセパレーターをCOUNT=に設定します。{print $2}は2番目のフィールド(数値部分)をプリントします。
これらの方法によって、入力文字列からCOUNT=XXXXの形式の数値部分を抽出できます。それぞれの方法は用途や好みに応じて使用できますが、どちらも効果的です。

コメント