将 grep 输出以格式化的形式存储到文件中

将 grep 输出以格式化的形式存储到文件中

我想存储结果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"

相关内容