gpt4 book ai didi

linux - Solaris 的 grep -A 备用命令是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:24:32 25 4
gpt4 key购买 nike

我正在尝试从服务器日志文件中获取一些异常详细信息。我试过这个:

cat server.log | grep -A10 exception

这样我就可以获得异常详细信息。但是服务器响应是:

grep: illegal option -- A

Solaris 中是否有替代上述命令的方法?请帮忙。

最佳答案

使用 awk 可以实现与 grep -A 相同的行为:

awk -v A=10 '/exception/{f=A+1} f{print;f--}' server.log

上面的代码打印匹配项及其后的十行,就像 grep -A10 exception server.log 一样。 A 的值可以随意更改。

例子

考虑这个示例文件:

$ cat server.log
a
b
c
exception
1
2
3
4
5

将 A 设置为 3,输出如下:

$ awk -v A=3 '/exception/{f=A+1} f{print;f--}' server.log
exception
1
2
3

SunOS/Solaris 的特别说明

众所周知,Sun/Solaris 上的原生 awk 漏洞百出。取而代之的是,使用 nawk
更好的是 /usr/xpg4/bin/awk/usr/xpg6/bin/awk。例如:

/usr/xpg4/bin/awk -v A=10 '/exception/{f=A+1} f{print;f--}' server.log

用多个文件模拟 grep 的行为

当给定多个文件名时,grep 的输出变为:

$ grep -A3 exception server.log server.log
server.log:exception
server.log-1
server.log-2
server.log-3
--
server.log:exception
server.log-1
server.log-2
server.log-3

我们也可以用 awk 模拟这个(这可能需要 GNU awk):

$ awk -v A=3 '/exception/{f=A+1;if(x)print"---";x=1} f{print FILENAME (f==A+1?":":"-") $0;f--}' server.log server.log
server.log:exception
server.log-1
server.log-2
server.log-3
---
server.log:exception
server.log-1
server.log-2
server.log-3

关于linux - Solaris 的 grep -A 备用命令是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37517941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com