获取括号之间的多个值

Get multiple values between brackets

我想检索括号内的多个字符串。这是我现在使用的命令:

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

它returns我输出如下:

[GLOBAL]
[MAIL_1]

我怎样才能一一得到结果?并且,在这种情况下,作为两个变量?

您可以使用

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

online grep demo

-o 选项使 grep 提取匹配的子字符串而不是打印匹配行,并且 \[[^][]*] 模式匹配:

  • \[ - 一个 [ 字符
  • [^][]* - ][ 以外的 0 个或多个字符(使用 "smart placement",括号表达式开头的 ]被视为 ] 并且 [ 字符在括号表达式中并不特殊)
  • ] - ] 字符(无需转义 ])。

逐场处理:

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