为每行的第一部分着色

为每行的第一部分着色

我有一些聊天记录,例如:

(15:12:56) rubo77: mist migration
(15:05:22) hans: ist hugo da?
(15:36:13) rubo77: test
(13:30:15) rubo77: what are the access data?
(15:06:38) [email protected]: user :  [email protected] (https://somewhere.de:8080/index.php#)
(15:06:38) [email protected]: password :  test

我怎样才能使用它来替换它sed,以便用户名将采用不同的颜色?

或者有比这个更简单的工具吗sed

答案1

你可以使用这个:

sed 's/) \(.*\):/) \x1b[31m\1\x1b[0m:/'

例如:

cat 1| sed 's/) \(.*\):/) \x1b[31m\1\x1b[0m:/'

版本 2:

COLOR=32
sed 's/) \(.*\):/) \x1b['${COLOR}'m\1\x1b[0m:/'

你可以改变颜色编号

版本 3:

COLOR=32
sed 's/) \([[:alpha:][:digit:][:space:]@\.]*\):/) \x1b['${COLOR}'m\1\x1b[0m:/1'

答案2

awk应该是最简单的:

awk '{$2="\033[01;31m"$2"\033[00m"; print $0}' logfile

答案3

您可以使用ccze对输出进行着色。

它没有针对这种情况进行优化,但提供了很多漂亮的图案。

答案4

好吧,您想要做的(多用户着色)是可能的,但并不完全简单。

您可以创建一个非常长的 sed 表达式(使用;)来执行请求的操作;这正是这个 shell 脚本正在做的事情,代表集群上使用的活动: http://fotis.web.cern.ch/fotis/QTOP/
(屏幕截图的最后一部分显示了所描述用例的实例)
其想法是解析 qtop.colormap,将其编译为 sed 表达式,然后使用它。

警告:由于使用 shell 脚本和深层 sed 表达式,在软件工程方面,它的可维护性非常差。但你当然可以做到。

相关内容