我使用以下awk命令仅打印本例中包含特定文本字符串(3705@192.168.1.5)的节/记录。这非常有效,但awk在打印输出时删除了记录分隔符。 对于基于通用文本的RS,我可以使用{print RS,$ 0}来重新打印它,但在这种情况下,awk会在每条记录之前打印正则表达式。
awk' BEGIN { RS = "([01]?[0-9] | 2 [0-3]):[0-5] [0-9]:[0-5] [0-9]。[0-9] [0-9] [0-9]" ;} /3705@192.168.1.5/ {打印 RS ,$ 0}' /var/log/abc.log
有没有办法可以在每条记录之前打印RS(在这种情况下是时间戳)?感谢
答案 0 :(得分:1)
由于您使用的是多字符RS,因此您必须已经在使用gawk,因此只需打印RT
而不是RS
。阅读Arnold Robbins撰写的“有效Awk编程”第4版。