使用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
答案 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/awk
或nawk
答案 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。