在 bash shell 中格式化输出以删除特殊字符 - linux

在 bash shell 中格式化输出以删除特殊字符 - linux

我正在针对日志文件发出以下命令

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

不需要awkgrep可以单独完成:

grep -oP 'Oracle Audit\[\K[0-9]+(?=\])' /var/adm/messages

after\KOracle Audit\[报告的匹配的开头重置为此点。因此它不是匹配的一部分。在您要打印的数字之后有一个向前看(?=)。类似于\K序列。

它将打印:

9460
10507
10507
10507

相关内容