Moh*_*mel 39 colors python command-line grep ansi
我需要将 grep 命令的结果保存到一个文件中,但我也希望输出文件被格式化并保持颜色就像在终端中一样。
有没有办法做到这一点?也许将 grep 保存为某种标记语言?如果不可能,是否有其他工具可以完成此任务?
我试图让搜索关键字在输出文件中脱颖而出,就像在终端中一样。
Syl*_*eau 48
要保留标记,您需要的不仅仅是一个文本文件。我会使用 HTML 输出来保持颜色。
安装aha ie 以“将unix 终端的ANSI 转义序列转换为 HTML 代码”
sudo apt-get install aha
Run Code Online (Sandbox Code Playgroud)然后像这样保存grep(或ls)输出:
ls --color=always | aha --black --title 'ls-with-colors' > ls-with-colors.html
Run Code Online (Sandbox Code Playgroud)
选项:
--black param to set background as black color
--title param to set the title for HTML page
Run Code Online (Sandbox Code Playgroud)文件扩展名的语法高亮显示 pygmentize
安装pygmentize:
sudo apt-get install python-pygments
Run Code Online (Sandbox Code Playgroud)然后运行这种命令:
pygmentize file.pl | grep -i --color=always version | aha --black > ls-with-colors.html
Run Code Online (Sandbox Code Playgroud)
Mas*_*ary 10
根据您要对输出文件执行的操作,可以向普通文本文件添加颜色,因为颜色仅来自某些特殊字符。当您将其重定向到文件时,Grep 似乎不想打印它们,因此您需要强制它:
grep --color=always "stuff" input.txt > output.txt
Run Code Online (Sandbox Code Playgroud)
现在,当您将文件打印到控制台时,它将使用颜色打印,因为 Bash 将这些字符解释为“使用此颜色”。
cat output.txt
Run Code Online (Sandbox Code Playgroud)
但是,如果您在 像这样的编辑器中打开它vim,您会看到一些奇怪的字符。例如,当我使用命令时
echo "A sentence. A red sentence. Another sentence." \
| grep --color=always "A red sentence" > output.txt
Run Code Online (Sandbox Code Playgroud)
当我使用打印时输出看起来正确cat但是当我打开它时vim我得到
A sentence. ^[[01;31m^[[KA red sentence^[[m^[[K. Another sentence.
Run Code Online (Sandbox Code Playgroud)
因此,如果您想使用编辑器,这可能不是您想要的。