이 매개변수에는 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
두 번째 명령의 PCRE는 \S
공백이 아닌 모든 문자와 일치합니다.