AWK打印和彩色3个变量

时间:2018-11-26 16:59:48

标签: bash awk

我有两个AWK命令,它们等效于grep -e PATTERN,其他命令在输出中为特定的单词着色,但不仅过滤这些行。可以将它们合并为一个awk.sh文件吗?

这将打印3个变量(用户名组策略分配的IP ):

awk '/^Username/{print $0}/^Group/{print $0}/^Assigned/{print $0}' session.log

所以看起来像这样:

[root@localhost User]# ./find.sh Username : User1 Index : 111 Assigned IP : 11.11.11.111 Public IP : 22.22.22.222 Group Policy : DfltGrpPolicy Tunnel Group : Default-VPN Username : User2 Index : 111 Assigned IP : 11.11.11.111 Public IP : 22.22.22.222 Group Policy : DfltGrpPolicy Tunnel Group : Default-VPN

其他颜色分别为变量绿色和红色(但是会输出大量垃圾,并且由于某种原因第二个变量颜色被破坏了?):

cat session.log | awk '{ gsub("Username", "\033[1;32m&\033[0m");
                                   gsub("Assigned IP", "\033[1;32m&\032[0m");
                                   gsub("Group Policy", "\033[1;31m&\033[0m");
                                   print }'

这是着色输出的图片:

Picture of coloring output

这是MS Word中的编辑内容,但这是我的最终目标。

Edited in MS Word, but this is my end goal.

1 个答案:

答案 0 :(得分:1)

  1. 您不需要cat即可读取文件。只需使用awk。
  2. 我认为您想要sub而不是gsub
  3. 在分配的IP中,您有\032[0m,但我想您想要\033[0m
  4. 您可以结合所有内容:

    awk '/^(Username|Assigned IP)/{sub("^(Username|Assigned IP)", "\033[1;32m&\033[0m"); print} /^Group Policy/{sub("^Group Policy", "\033[1;31m&\033[0m"); print}' session.log