单引号的grep和字符串中的双引号

时间:2016-05-25 15:18:52

标签: regex shell unix grep

所以我正在尝试编写一个grep,它在给定文件中找到.epl文件名或文件路径。

我尝试了以下正则表达式

第1部分:使用的REGEX grep -rEco "\/(.+)\.epl|(.+)\.epl" ./index.epl 获得的结果

    url => 'xyz.epl
    url => 'xyz.epl
    url => 'xyz.epl
    url => "packet/xyz.epl
    url => "/web/abc/xyz.epl
    url => qq{/web/abc/xyz.epl
    url => '/web/abc/def/xyz.epl
    url => '/web/abc/def/xyz.epl
    url => 'xyz.epl
    url => 'xyz.epl
    $url = "/web/abc/def/xyz.epl
    var requestURL = "xyz.epl
    var requestURL = "xyz.epl
    <a style="float:left;" href="xyz.epl
    [- Execute('components/xyz.epl
    Welcome, <a href="xyz.epl
    [- Execute('components/xyz.epl
    <a href="xyz.epl
    [- Execute(`'components/xyz.epl`

但是我希望它只匹配以下内容(带或不带前面的引号)

    'xyz.epl(OR xyz.epl)
    'xyz.epl
    'xyz.epl
    "packet/xyz.epl(OR packet/xyz.epl)
    "/web/abc/xyz.epl(OR "/web/abc/xyz.epl)
    /web/abc/xyz.epl
    '/web/abc/def/xyz.epl
    '/web/abc/def/xyz.epl
    'xyz.epl
    'xyz.epl
    "/web/abc/def/xyz.epl
    "xyz.epl
    "xyz.epl
    "xyz.epl
    'components/xyz.epl
    "xyz.epl
    'components/xyz.epl
    "xyz.epl
    'components/xyz.epl

为了获得所需要的我试过grep -rEoc '\/(.+)\.epl|[\"\'](.+)\.epl' 但是它给了我一个unmatched '.错误

我删除了正则表达式周围的引号,我得到了 Badly placed ()'s.

请帮助我实现正确的所需输出。

2 个答案:

答案 0 :(得分:1)

我找到了两个不同来源的问题的答案。 一个解释here。 另一个是

set quote='"'; grep -E "\/(.+)\.epl|['${quote}](.+)\.epl" /index.epl

设定的报价做了伎俩

答案 1 :(得分:0)

如何告知哪些字符被接受为文件名的一部分:

grep -Eo "[0-9a-zA-Z/]*.epl" ./index.epl