我正在针对日志文件发出以下命令
grep "Oracle Audit" /var/adm/messages | awk '{print $6}'
如何格式化以下输出
Audit[9460]:
Audit[10507]:
Audit[10507]:
Audit[10507]:
仅显示数字,例如
9460
10507
10507
etc
答案1
如果你想要一个纯粹的awk
解决方案,尝试
awk '{ sub("Audit\\[", "", $6); sub("]:", "", $6); print $6 }'
它将不需要的字符串替换为$6
空。可以想象,Cyrus 的答案可能比这个更快。或者不是。
答案2
不需要awk
,grep
可以单独完成:
grep -oP 'Oracle Audit\[\K[0-9]+(?=\])' /var/adm/messages
after\K
将Oracle Audit\[
报告的匹配的开头重置为此点。因此它不是匹配的一部分。在您要打印的数字之后有一个向前看(?=)
。类似于\K
序列。
它将打印:
9460
10507
10507
10507