我正在尝试 grep 文件并用颜色突出显示关键字,然后输出美化输出以替换文件或输出到新文件。
我的文件user.log
正确生成,当我运行它时:
grep --color -E -i "Error|$" user.log
我在终端上看到正确的输出。但是,当我尝试输出到这样的文件时:
grep --color -E -i "Error|$" user.log > user_pretty.log
颜色选项消失(内容仍然存在,但只有黑白(。
另一件事是当我尝试像这样输出和替换文件时grep --color -E -i "Error|$" user.log > user.log
内容消失(当我运行cat
时它只是空白(。
我不允许将输出定向到带有颜色选项的新文件吗?
--color
(假设GNUgrep
,但可能同样适用于支持颜色的其他版本grep
(是--color=auto
的缩写,这意味着如果grep
确定其标准输出是终端,则输出仅包含适当的转义序列。要在写入文件时强制使用颜色,请使用--color=always
。
(用于查看文件的内容可能会也可能不会按预期解释这些字节。cat user_pretty.log
只会将所有内容写入终端,终端会像您刚刚在没有重定向的情况下运行grep
一样解释它们。如果在编辑器中打开文件,则可能会看到编辑器对不可打印字符的表示形式。