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

두 번째 명령의 PCRE는 \S공백이 아닌 모든 문자와 일치합니다.

관련 정보