【问题标题】:Read expression for grep from standard input从标准输入中读取 grep 的表达式
【发布时间】:2011-07-10 14:43:21
【问题描述】:

如何让 grep 从标准输入 (stdin) 读取 表达式

例如(以下不起作用):

grep -i -f &0 /path/to/text/file < "/regexp/"

【问题讨论】:

    标签: grep stdin


    【解决方案1】:

    使用带有单破折号的-f 来表示标准输入:

    $ echo Content | grep -f - notice.html 
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    ...
    

    注意:这已经用 GNU grep 测试过 - 我不确定它是否由 POSIX 指定。

    【讨论】:

    • @Dor:将-E 用于扩展表达式怎么样?不行吗?
    • 这在 MinGW (Windows) 上运行良好 - 只要包含独立的破折号!
    • 实际上,我得到了预期的匹配,但也得到了 grep 的误报,我无法解释。搜索规范(来自标准输入)是一系列数字(如 1.174500、45045.367300、45045.442300、45045.502500、45675.290200、48149.824300、48149.883600 和 52485.123600),并且我使用 ""pgre:Agre-B 和 """选项-f - -A 10 -B 10 ”。我从 . 中相距很远的地方得到误报匹配
    • 这可能早就解决了。如果您搜索 45045.502500,您会发现 . 是一个字符通配符,不是吗?
    • 这似乎不适用于所有,绝对不适用于 mac
    猜你喜欢
    • 2013-03-30
    • 2012-02-17
    • 2018-02-05
    • 1970-01-01
    • 2012-04-30
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多