Linux

如何解決 OSX 終端上 gawk (GNU awk) 的語法錯誤?

  • April 11, 2018

我正在使用 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說錯誤?

我猜你想跑

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

BEGIN定義在程序開始時執行的指令塊,並/123/定義當“123”正則表達式匹配目前行時執行的塊。您不能為單個塊指定兩者。

引用自:https://unix.stackexchange.com/questions/436950