首页 > 解决方案 > 获取括号之间的多个值

问题描述

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

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

它返回我的输出,如:

[GLOBAL]
[MAIL_1]

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

标签: regexbashbrackets

解决方案


您可以使用

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

查看在线grep演示

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

  • \[- 一个[字符
  • [^][]*- 0 个或多个除]and以外的字符[(使用“智能布局”,括号]表达式开头的][
  • ]- 一个]字符(无需转义])。

逐个处理匹配:

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

推荐阅读