bash + スペースで区切られた文字列から特定の単語を検索する

bash + スペースで区切られた文字列から特定の単語を検索する

このパラメーターには、list次の例の値が含まれています。

# echo $list
master01.montil131.com worker01.montil131.com worker02.montil131.com

master文字列を含む単語を見つけるには、次の手順を実行します。

list=$( for i in ` echo  $list `; do [[ $i =~ master ]] && echo $i ; done )

echo $list
master01.montil131.com

しかし、master単語で文字列を見つけるこの方法はエレガントではありません。

で特定の単語を見つける方法に関する他の提案はありますかlist

答え1

簡単なコマンドを使用するとどうなりますかgrep?リストの単語にスペースがないとします。

 echo $list | tr ' ' '\n' | grep master

スペースを新しい行に置き換えてから、単語マスターをgrepします。

答え2

使用grep -o:

grep -o "[^ ]*master[^ ]*" <<<"$list"

master*常に sums しかないことがわかっている場合は、worker*Shell メソッドを使用できます。

echo "${list// *worker[^ ]*/}"

答え3

grep -ow 'master[^ ]*' <<<"$list"

またはGNUを使用してgrep

grep -Pow 'master\S+' <<<"$list"

-o文字列から一致するビットを抽出し、$list一致しないか、別の単語で始まらないことを-w確認してください。themastermaster

2 番目のコマンドの PCRE は、\S空白以外のすべての文字と一致します。

関連情報