【问题标题】:How to grep a string in a file that begins and ends with two specific characters?如何grep文件中以两个特定字符开头和结尾的字符串?
【发布时间】:2021-01-28 00:29:41
【问题描述】:

我有一个 URL 文件,我想 grep 具有参数的 URL。

我能够 grep 包含以“?”开头的子字符串的 URL并以 '=' 结尾:

grep '?[a-z0-9]*=' foobar.txt

如何 grep 以 '&' 开头并以 '=' 结尾的子字符串? 我试过了:

grep -E '?[a-z0-9]*=|&[a-z0-9]*=' foobar.txt

但是,这行不通。

另外,对于其中包含“_”或“-”的参数,如何在正则表达式中包含特殊字符?

【问题讨论】:

  • 您需要使用正向前瞻和正向后视,结果正则表达式可能是:(?=\?).*(?<=\=)

标签: regex bash grep


【解决方案1】:

使用

grep -E '\?[^?=]*=|&[^&=]*=' foobar.txt

您选择带有-E 的POSIX ERE,这就是问号需要转义的原因。

您将?= 之间的任何内容与[^?=]* 匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 2013-08-18
    • 2014-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多