使用awk搜索模式并从日志文件中打印下15行

时间:2018-08-02 15:25:56

标签: linux bash shell awk

使用awk搜索模式并从日志文件中打印下15行

awk '/^DERAT1SB[0-9][0-9]# show registration/{nr[NR]; nr[NR+4]}; NR in nr' slb.log

我正在使用上述命令在日志文件中搜索模式DERAT1SB23# show registration,但是它引发了语法错误。

错误:

awk: syntax error near line 1

awk: bailing out near line 1

3 个答案:

答案 0 :(得分:0)

使用GNU sed搜索图案并打印下15行

sed -n '/pattern/,+15 p' file

使用普通awk:

awk '
    /pattern/ {
        print
        for (i=1; i<=15; i++) {getline; print}
        exit
    }
' file

答案 1 :(得分:0)

  

awk:在第1行附近救助

这是一个已知问题,您应该在Solaris / SunOS系统上更改代码,将awk更改为/usr/xpg4/bin/awk/usr/xpg6/bin/awknawk

答案 2 :(得分:0)

来自 Effective Awk Programming, Edition 4

  

其他任何名字的玫瑰 awk语言已经发展了多年。附录A中提供了完整的详细信息。   [awk语言],第439页。本书中所描述的语言通常是   称为“新awk”。以此类推,awk的原始版本是   称为“旧awk”。

     

在大多数当前系统上,当您运行   awk实用程序,您会获得一些新版本的awk。 4 如果您的系统是   标准awk是旧的awk,如果您看到   尝试测试程序:

$ awk 1 /dev/null
error awk: syntax error near line 1
error awk: bailing out near line 1
     

在这种情况下,您   应该找到新awk的版本,或者只是安装gawk!

     

穿越   这本书,每当我们提到一种语言功能时,   在POSIX awk的任何完整实现中都可用,我们只需使用   术语awk。当指代特定于GNU的功能时   实施中,我们使用术语gawk。

     

4 只有Solaris系统仍将旧的awk用于默认的awk实用程序。在这些系统上的/usr/xpg6/bin中存在着更现代的awk。