Linux

bash + 在空格分隔的字元串中查找特定單詞

  • February 19, 2019

該參數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嗎?

為什麼不使用簡單的grep命令,我假設列表中的單詞中沒有空格。

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

它將用新行替換空格,然後 grep word master。

使用grep -o

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

如果你知道你總是只有master*and worker*,你可以使用 Shell 方法:

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

引用自:https://unix.stackexchange.com/questions/501609