为什么grep -a输出到控制台?

时间:2017-02-27 01:42:49

标签: windows bash windows-7 grep cygwin

在执行grep -a 5 "SEARCHSTRING" FILE.txt时,grep似乎会实时打印文件到控制台的搜索,我发现它既有用又酷。但是,当简单地执行grep "SEARCHSTRING" FILE.txtgrep -i -n --color -C 5 "SEARCHSTRING" FILE.txt时,我会在处理文件时获得通常闪烁的光标。

为什么grep -a在搜索文件时输出到控制台,如何在不使用-a选项的情况下复制该行为?

1 个答案:

答案 0 :(得分:1)

请注意,您关于grep的多个问题与编程无关,而且您似乎还没有仔细阅读grep手册。 从man grep我看到:

  -a, --text
          Process a binary file as if it were text; this is equivalent  to
          the --binary-files=text option.

所以它不是重定向输出,默认仍然是控制台。 我知道,没有选择会延迟输出。

附加说明: grep -a 5 "SEARCHSTRING" FILE.txt表示以二进制模式打开输入,并在文件5SEARCHSTRING中搜索字符串File.txt;因此,您要求的grep "SEARCHSTRING" FILE.txtSEARCHSTRING更多,而File.txt代替grep -a 5 "SEARCHSTRING" FILE.txt |wc -l grep -i "SEARCHSTRING" FILE.txt |wc -l 。可能这就是为什么你看到立即输出和延迟输出?在第一种情况下,你可能会有更多的匹配。您可以使用

进行验证
wc -l

并比较匹配数量。 btrfs计算行数