使用多个" sed"对命令的输出进行着色。呼叫

时间:2016-05-10 15:20:46

标签: bash sed colors

我希望将"历史"的输出着色。带有时间戳。让我们说一行是

2084  10.05.16 17:08:13 history | sed 's/^[ 0-9]*[ ]/\o033[1;32m&\o033[0m/' | tail -n10

目前我想了

    history | sed 's/^[ 0-9]*[ ]/\o033[1;32m&\o033[0m/' | tail -n10

以淡黄色调打印计数器。现在我想让时​​间戳换成另一种颜色。我试过了

    history | sed 's/[ 0-9.:]*[ ]/\o033[1;31m&\o033[0m/' | sed 's/^[ 0-9]*[ ]/\o033[1;32m&\o033[0m/' | tail -n10

但显示计数器以及红色的时间戳。

我如何编写sed调用以获得" 2084"用一种颜色和时间戳" 10.05.16 17:13:39"在另一个?

提前THX!

2 个答案:

答案 0 :(得分:3)

我使用的机器上的

history没有时间戳字段,但如果您的历史命令输出如下行:

2084  10.05.16 17:08:13 history

然后你想要:

history | sed -E 's/^(\S+)(\s+)(\S+\s+\S+)/\o033[1;31m\1\o033[0m\2\o033[1;32m\3\o033[0m/'

以上使用\S\s的GNU sed - 如果你的sed不支持它们,请分别用[^[:blank:]][[:blank:]]替换它们。

答案 1 :(得分:0)

我建议安装grc(通用颜色程序)并创建自定义配置文件,如下所示:

# conf.history for grc
# sequence number
regexp=^\s+\d+
colours=yellow
=======
# date/time stamp
regexp=\d+\.\d+\.\d+\s+\d+:\d+:\d+
colours=red
count=once

然后你可以这样做:

history | grcat conf.history

如果我将HISTTIMEFORMAT设置为"%d.%m.%y %H:%M:%S"以匹配您的输出,则上述内容适用于我的机器 - 我会获得黄色序列号和红色日期/时间戳以及其他所有内容。