Получить несколько значений в скобках - PullRequest
2 голосов
/ 11 марта 2020

Я хочу получить несколько строк в скобках. Вот команда, которую я сейчас использую:

grep '\[*\]' src/config/mail.ini

Она возвращает мне вывод вроде:

[GLOBAL]
[MAIL_1]

Как я могу получить результат один за другим? И, в этом случае, как две переменные?

1 Ответ

3 голосов
/ 11 марта 2020

Вы можете использовать

grep -o '\[[^][]*]' src/config/mail.ini

См. online grep demo

Опция -o заставляет grep извлекать совпадающие подстроки вместо печати совпадающие строки и шаблон \[[^][]*] соответствует:

  • \[ - [ char
  • [^][]* - 0 или более символов, отличных от ] и [ (используется «умное размещение», ] в начале выражения в скобках рассматривается как ], а символ [ не является специальным в выражении в скобках)
  • ] - ] char (не нужно экранировать ]).

Для обработки совпадения по совпадению:

while read -r line ; do
    echo "Processing $line"
    # your code goes here
done < <(grep -o '\[[^][]*]' src/config/mail.ini)
...