Считайте, что у меня есть такой список:
list='item1.service item2.service item3.target item4.service'
Мне нужно отфильтровать этот список, чтобы получить что-то как:
item1 item2 item4
Итак, следует отметить две вещи:
- Мне нужно только держать предметы
.service
- Мне нужны только "базовые" имена без суффикса
.service
.
И еще одна важная информация: я работаю на busybox, где инструменты часто калечатся (например: мой grep
не поддерживает регулярные выражения Perl).
Я боролся против комбинаций sed
и grep
и лучшее, что я мог получить, это:
$ echo $list | grep -io '[a-z0-9\-\_@]*.service' | sed 's/\.service//'
item1
item2
item4
но он должен выполнить по существу одно и то же совпадение дважды для каждого входа, что выглядит не очень эффективно. Может ли кто-нибудь предложить лучшее решение, пожалуйста?
Заранее спасибо.