我想存储结果grep在一个文件中,其格式与 Konsole(Kubuntu)中的输出相同。我尝试将其保存在 LibreOffice 文档中,但结果与文本文件中的结果没有什么不同。我如何将结果存储在具有格式的文件中?我的意思是我如何将结果与彩色输出一起存储?
答案1
为了保留颜色,请使用--color=always
grep --color=always "pattern" file.txt > newfile.txt
从手册页中:
--color[=WHEN], --colour[=WHEN]
Surround the matched (non-empty) strings, matching lines, context lines, file names,
line numbers, byte offsets, and separators (for fields and groups of context lines)
with escape sequences to display them in color on the terminal. The colors are defined
by the environment variable GREP_COLORS. The deprecated environment variable
GREP_COLOR is still supported, but its setting does not have priority. WHEN is never,
always, or auto.
答案2
默认情况下,grep
在管道或重定向时关闭颜色格式。您可以使用以下选项强制它提供颜色格式的输出--color=always
:
grep --color=always "pattern" infile > outfile
颜色信息将显示为一堆转义字符。如果您稍后想要删除转义字符,这里有一个漂亮的 shell 命令可以sed
做到这一点:
sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"
(请注意,在 OS X 上,使用sed -E "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"
)