我有一些聊天记录,例如:
(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 表达式,在软件工程方面,它的可维护性非常差。但你当然可以做到。