【问题标题】:Get multiple values between brackets获取括号之间的多个值
【发布时间】:2020-03-11 23:52:32
【问题描述】:

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

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

它返回给我的输出如下:

[GLOBAL]
[MAIL_1]

如何才能一一得到结果?而且,在这种情况下,作为两个变量?

【问题讨论】:

  • grep -o '\[[^][]*]' src/config/mail.ini,见demo
  • 如何循环,例如,一个一个显示结果?

标签: regex bash brackets


【解决方案1】:

你可以使用

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

online grep demo

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

  • \[ - 一个 [ 字符
  • [^][]* - 除][ 之外的0 个或多个字符(使用“智能放置”,括号表达式开头的] 被视为][ 字符不是括号内的特殊表达式)
  • ] - 一个 ] 字符(无需转义 ])。

逐个处理匹配:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    相关资源
    最近更新 更多