如何解决 OSX 终端上 gawk (GNU awk) 的语法错误?

如何解决 OSX 终端上 gawk (GNU awk) 的语法错误?

我正在使用 OSX 终端并尝试通过正则表达式提取日志文件的指定文本。

awk 版本是

GNU Awk 4.2.1, API: 2.0 (GNU MPFR 4.0.1, GNU MP 6.1.2)
Copyright (C) 1989, 1991-2018 Free Software Foundation.

我尝试的操作是

$gawk '/123/ BEGIN{RS="DEBUG"; FS="\n"}{print $0"\n"}END{}' ./app_108_utf8_T2.log > output.txt

但 awk 说

gawk: cmd. line:1: /123/ BEGIN{RS="DEBUG"; FS="\n"}{print $0"\n"}END{}
gawk: cmd. line:1:       ^ syntax error

awk为什么报错?

答案1

我猜你想逃跑

gawk 'BEGIN{RS="DEBUG"; FS="\n"} /123/{print $0"\n"}' ./app_108_utf8_T2.log > output.txt

BEGIN定义在进程开始时运行的指令块,并/123/定义当“123”正则表达式与当前行匹配时运行的指令块。您不能为单个块指定两者。

相关内容