【问题标题】:How to modify the font color of output in shell script with sed?如何使用 sed 修改 shell 脚本中输出的字体颜色?
【发布时间】:2015-04-26 06:27:04
【问题描述】:

我有一个 shell 脚本,它使用 sed 重定向文件中的特定行。

sed -n "${line_num}p" $1 >> output.txt

我想在将该行重定向到 output.txt 之前为该行着色。

我该怎么做?

【问题讨论】:

  • 文本文件不包含颜色。您可以将终端颜色代码写入文件,但它不再是“文本”。
  • Etan,我只需要根据行号从文件中提取一些行并将其重定向到另一个文件。在重定向之前,我需要修改行的颜色。
  • 文本行没有颜色。您可以使用特定于终端(但通常可查询)的转义/二进制代码为您的终端添加颜色。您可以将这些写入文件,但是您不再拥有 text 文件,而是拥有一个包含文本的二进制文件和文本编辑器/等。可能无法正确处理。

标签: shell sed


【解决方案1】:

如前所述,“文本”没有颜色。但你可以这样做:

BLUE=$(tput setaf 4)
NONE=$(tput op)
sed -n "${line_num}p" $1 | sed -e 's/^\(.*\)$/'"$BLUE"'\1'"$NONE"'/' >> output.txt

将终端特定的转义序列添加到输出中。

tput 是一个 (n)curses 实用程序,它(参见manpage)查找终端功能并打印结果——您可以将其保存到变量中并在脚本中使用。参见例如这些:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    相关资源
    最近更新 更多