【问题标题】:How to colorize expression without its boundary in shell script如何在shell脚本中为没有边界的表达式着色
【发布时间】:2017-05-16 09:56:29
【问题描述】:

有如下输入:

./Tomcatv8.1/projects.xml:  <jdbc url="jdbc:sqlserver://localhost:1433;databaseName=MMMABC" />
./Tomcatv8.2/projects.xml:  <jdbc url="jdbc:sqlserver://localhost:1433;databaseName=MMMABC_New" />
./Tomcatv8.3/projects.xml:  <jdbc url="jdbc:sqlserver://localhost:1433;databaseName=ABC_20170407_STG" />
./Tomcatv8.5/projects.xml:  <jdbc url="jdbc:sqlserver://localhost:1433;databaseName=UPGABC_New" />

我想为数据库名称着色。

我用过

grep --color=auto -E "[a-zA-Z0-9_]+\""

它工作得很好,除了它还突出显示最后的 " 符号,它在我的正则表达式中用作边界。

如何只突出显示数据库名称?

【问题讨论】:

    标签: regex bash shell colors grep


    【解决方案1】:

    您可以将" 包含在前瞻中,并使用带有grep 的PCRE 正则表达式:

    grep --color=auto -P "[a-zA-Z0-9_]+(?=\")"
                       ^               ^^^^^^
    

    regex demo

    (?=\") 仅检查文本是否与模式匹配,但不会将值添加到结果匹配中。查看更多关于lookarounds in regex here的信息。

    【讨论】:

      猜你喜欢
      • 2013-07-24
      • 2016-06-25
      • 1970-01-01
      • 2013-08-17
      • 2017-12-03
      • 2011-08-31
      • 2010-10-23
      • 2010-12-10
      • 1970-01-01
      相关资源
      最近更新 更多