bash + найти конкретное слово в строке, разделенной пробелами

Один из способов получить лучшее из обоих миров (актуальное программное обеспечение, простая установка / удаление, включение большинства дистрибутивов настройки и адаптации, можно оптимизировать для местных требований), в то время как затраты (нужно быть в курсе, следить за ошибками и исправлениями в последний момент, следить за разработкой, вы сами по себе в отношении исправлений ошибок и несовместимости между версиями ) не может быть уменьшено (сильно), заключается в создании собственных пакетов, начиная с исходных пакетов из вашего дистрибутива. Да, это больше, чем просто сборка и установка.

1
19.02.2019, 23:27
3 ответа

Почему бы не использовать простую команду grep, я предполагаю, что в слове в списке нет пробелов.

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

Он заменит пробел новой строкой, а затем выполнит grep word master.

3
27.01.2020, 23:18

Используйтеgrep -o:

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

Если вы знаете, что у вас всегда есть только master*и worker*, вы можете использовать методы Shell:

echo "${list// *worker[^ ]*/}"
2
27.01.2020, 23:18
grep -ow 'master[^ ]*' <<<"$list"

или, с GNU grep,

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

-oбудет извлекать соответствующий бит строки в $list-wгарантирует, что мы не найдем themasterили какое-либо другое слово, которое не начинается с master.

\Sво второй команде — это PCRE, который будет соответствовать любому символу пробела, отличному от -.

1
27.01.2020, 23:18

Теги

Похожие вопросы