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

时间:2016-05-30 05:06:03

标签: linux shell solaris glassfish-3

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

cat server.log | grep -A10 exception

这样我就可以得到异常细节。 但服务器响应是:

grep: illegal option -- A

Solaris上是否有备用命令?请帮忙。

3 个答案:

答案 0 :(得分:0)

根据manvar id = this.id; 上下文(和有用)选项似乎不属于Solaris -A的一部分。

您可以尝试重新编译grep source code

如果您知道足够的Perl或python,grep这样的命令就不会占用很多行。

这是一个Perl示例,其工作方式类似grep -A 10 exception files,在找到关键字后显示10行上下文(或当前目录中的cat file | grepa.pl exception)。

<强> grepa.pl

./grepa.pl

可以改进程序以将#!/usr/bin/perl $CONTEXT = 10; $search = $ARGV[0] or die "need search term!"; $n = 0; while(<STDIN>) { $n = $CONTEXT+1 if (/$search/); if ($n) { print; $n--; } } 作为参数给出,或搜索任何正则表达式。

答案 1 :(得分:0)

使用awk可以实现与console.log相同的行为:

#include "Queen.h" 

void changeToQueen(Piece* mx)
{
    for (int i = 0; i < 8; i++)
    {
        for (int j = 0; j < 8; j++)
        {
            mx[i][j] = new Queen();
        }
    }

}
int main()
{
    Piece * matrix[7][7];
    changeToQueen(matrix); // this fails
    return 0;
}

以上打印匹配及其后的十行,就像grep -A一样。 awk -v A=10 '/exception/{f=A+1} f{print;f--}' server.log 的值可以随意更改。

实施例

考虑这个示例文件:

grep -A10 exception server.log

如果A设置为3,则输出如下:

A

SunOS / Solaris

的特别说明

Sun / Solaris上的本机awk是众所周知的错误填充。取而代之的是使用$ cat server.log a b c exception 1 2 3 4 5
更好的是$ awk -v A=3 '/exception/{f=A+1} f{print;f--}' server.log exception 1 2 3 nawk。例如:

/usr/xpg4/bin/awk

使用多个文件模拟grep的行为

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

/usr/xpg6/bin/awk

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

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

答案 2 :(得分:0)

您也可以使用sed:

打印下10行,包括包含匹配模式的行。

sed -n '/pattern/{p;n;p;n;p;n;p;n;p;n;}/' file_name

打印下一行,不包括包含匹配模式的行。

sed -n '/pattern/{n;p;n;p;n;p;n;p;n;p;}/' file_name

您可以通过添加或删除n和p来播放要显示的行数。如果数字很大,awk是一个更好的选择,但sed方法很容易。