【问题标题】:grepping out invalid URIs找出无效的 URI
【发布时间】:2011-03-03 19:35:32
【问题描述】:

我有 dbpedia 的 NTriple 文件。其中一些包含非绝对 URI,即不以 http:// 开头的 URI。这导致解析出现问题。

即我有一些三元组的 URI 像 而不是

我想通过否定它们来消除它们。

我尝试使用 grep -v "^(

有什么建议吗?

编辑

我的观点可能是错误的。这些 URI 不一定在行首。那是我使用'^'运算符作为NOT的错误。 另外,我想用 grep -v 将它们 grep 出来。

这些是一些示例行:

.

.

【问题讨论】:

    标签: regex grep uri


    【解决方案1】:
    grep -P '^(?!<http).*'
    

    (?!...) 是负前瞻 我没有测试它,所以如果你不工作,请在网上搜索 '正则表达式负前瞻' 那应该做的工作

    【讨论】:

    • 这确实行不通。我检查了this answer,这让我觉得你的猜测是正确的。无法理解发生了什么。
    • 这很奇怪,我在我用 行编写的文件上对其进行了测试,它起作用了...-也许你可以发布一个虚拟文件进行测试?#
    • 一个问题,每个 url 是一行还是可以有更多?如果将您的网址复制粘贴为行(1 url 1 行)并将其保存到 test > grep -P '^(?!
    • 嗯,变化很大。你能把 1 个 URL 放在 1 行吗?这样做将允许您使用 grep 命令。 Atm 我不知道当 3 个 URL 在 1 行中时如何做到这一点......抱歉要将 url 移动到单行,我会使用 VIM:在编辑模式下按 qa(宏记录到 'a')---然后 '0', f_(_ 是空格), 'x', 'i', 'ENTER', 'ESC', f_(_ 是空格), 'x', 'i', 'ENTER', f_(_是空格),'d$','j',然后是 'q' -----
    • 我找到了解决方案:grep -P ''。 '
    【解决方案2】:

    要处理每行多个 URI,工作的正则表达式是:

    grep -P '',开始。

    【讨论】:

      【解决方案3】:

      "^(

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多