我有两个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 }'
这是着色输出的图片:
这是MS Word中的编辑内容,但这是我的最终目标。
答案 0 :(得分:1)
sub
而不是gsub
。\032[0m
,但我想您想要\033[0m
。您可以结合所有内容:
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