【发布时间】:2013-06-20 22:38:22
【问题描述】:
随着我对 UNIX 命令的了解越来越多,我开始在工作中使用 sed。 Sed 的设计是逐行读取文件,并在每一行单独执行命令。
grep 如何处理文件?我尝试了各种谷歌搜索“是否 grep 逐行处理”的方法,但没有真正具体的出现。
【问题讨论】:
-
grep 自己不处理任何东西。 grep 用于按模式过滤。
随着我对 UNIX 命令的了解越来越多,我开始在工作中使用 sed。 Sed 的设计是逐行读取文件,并在每一行单独执行命令。
grep 如何处理文件?我尝试了各种谷歌搜索“是否 grep 逐行处理”的方法,但没有真正具体的出现。
【问题讨论】:
此外,GNU grep 避免将输入分成几行。寻找换行符会使 grep 减慢几倍,因为要找到换行符,它必须查看每个字节!
然后
- 在找到匹配项之前不要在输入中查找换行符。
【讨论】:
--line-buffered。但是,手册说:Use line buffering on output. This can cause a performance penalty.
编辑: 我会纠正自己。它既不是逐行也不是完整文件,它是放在缓冲区中的数据块。
更多详情在这里http://lists.freebsd.org/pipermail/freebsd-current/2010-August/019310.html
【讨论】:
您传递给 grep 的正则表达式无法指定换行符(尽管您可以指定匹配行的开头或结尾)。
所以它似乎可以逐行工作,尽管实际上它可能不会将行尾与其他字符区别对待。
【讨论】: