【问题标题】:Does grep process line by line or entire file?grep 是逐行处理还是整个文件处理?
【发布时间】:2013-06-20 22:38:22
【问题描述】:

随着我对 UNIX 命令的了解越来越多,我开始在工作中使用 sed。 Sed 的设计是逐行读取文件,并在每一行单独执行命令。

grep 如何处理文件?我尝试了各种谷歌搜索“是否 grep 逐行处理”的方法,但没有真正具体的出现。

【问题讨论】:

  • grep 自己不处理任何东西。 grep 用于按模式过滤。

标签: unix grep


【解决方案1】:

来自Why GNU grep is fast

此外,GNU grep 避免将输入分成几行。寻找换行符会使 grep 减慢几倍,因为要找到换行符,它必须查看每个字节!

然后

  • 在找到匹配项之前不要在输入中查找换行符。

【讨论】:

  • +1。要逐行处理输入,请使用选项--line-buffered。但是,手册说:Use line buffering on output. This can cause a performance penalty.
  • 正是我想要的答案!
【解决方案2】:

编辑: 我会纠正自己。它既不是逐行也不是完整文件,它是放在缓冲区中的数据块。

更多详情在这里http://lists.freebsd.org/pipermail/freebsd-current/2010-August/019310.html

【讨论】:

    【解决方案3】:

    您传递给 grep 的正则表达式无法指定换行符(尽管您可以指定匹配行的开头或结尾)。

    所以它似乎可以逐行工作,尽管实际上它可能不会将行尾与其他字符区别对待。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-28
      • 2015-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-12
      相关资源
      最近更新 更多