
このパラメーターには、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
確認してください。themaster
master
2 番目のコマンドの PCRE は、\S
空白以外のすべての文字と一致します。