asadasdad

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を使用

  1. grep -o 'COUNT=[0-9]\+':
  • -oオプションを使って、指定したパターンにマッチする部分だけを出力します。
  • 'COUNT=[0-9]\+'は正規表現で、「COUNT=」に続く1つ以上の数字にマッチします。
  1. sed 's/COUNT=//':
  • sedを使って「COUNT=」の部分を空文字に置換します。

方法2: awkを使用

  1. awk -F 'COUNT=' '{print $2}':
  • -F 'COUNT='はフィールドセパレーターをCOUNT=に設定します。
  • {print $2}は2番目のフィールド(数値部分)をプリントします。

これらの方法によって、入力文字列からCOUNT=XXXXの形式の数値部分を抽出できます。それぞれの方法は用途や好みに応じて使用できますが、どちらも効果的です。

コメント

タイトルとURLをコピーしました