linux - 将彩色关键字 grep 输送到文件时的 Bash 不包含颜色
问题描述
我正在尝试 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
(假设 GNU grep
,但对于其他grep
支持颜色的版本可能类似)是 的缩写,这意味着如果确定其标准输出是终端--color=auto
,则输出仅包含适当的转义序列。grep
要在写入文件时强制使用颜色,请使用--color=always
.
(您用来查看文件的内容可能会也可能不会按照您的预期解释这些字节。cat user_pretty.log
只会将所有内容写入终端,这会将它们解释为就像您刚刚在grep
没有重定向的情况下运行一样。如果您在编辑器中打开文件,您可能会看到编辑器对不可打印字符的表示。)
推荐阅读
- performance - 提高ESC/POS Thermal_Printer图像打印速度的方法?
- c - 假设给定数组 p[1......N] 和 q[1......N] 都未初始化,即每个位置可能包含任意值),
- asp.net-core - “没有为此 DbContext 配置数据库提供程序”
- javascript - 如何过滤对象并更新过滤的内容?JavaScript
- r - 如何添加将另一列解释为时间段的列?
- c - C/Linux:在线程之间交替
- python - 如何打印列表中的数据?
- memory - Redis 内存限制为只读
- javascript - POST 方法未插入用户数组
- c++ - 如何使用 C++ 播放 Wav 字节数组