我的腳本中有以下一行awk代碼,它在日誌的開始和結束模式之間搜索文本。awk處理特殊字符,同時在兩種模式之間捕獲文本
日誌類似於:
[zzzz] Static WEB3
[zzzz] capture me
[zzzz] capture me
[zzzz] capture me
[zzzz] end-pattern
或者可以
[zzzz] Static WEB1 :: WEB2 :: WEB3
[zzzz] capture me
[zzzz] capture me
[zzzz] capture me
[zzzz] end-pattern
awk腳本:
awk "/\[zzzz\] Static ${VAR3}/|| /${VAR1} :: ${VAR2} :: ${VAR3} /{flag=1;next} /end-pattern:/{flag=0}flag" /tmp/error.log
我得到了這些錯誤:
01:18:35 awk: cmd. line:1: /\[zzzz\] Static WEB3/|| /WEB1 :: WEB2 :: WEB3 /{flag=1;next} /end-pattern:/{flag=0}flag
01:18:35 awk: cmd. line:1: ^syntax error
01:18:35 awk: cmd. line:1: /\[zzzz\] Static WEB3/|| /WEB1 :: WEB2 :: WEB3 /{flag=1;next} /end-pattern:/{flag=0}flag
01:18:35 awk: cmd. line:1: ^syntax error
我不明白爲什麼我從awk得到上面的syntax errors
,而上面的代碼在我的本地機器上完全執行(ubuntu 16.04,帶有bash GNU bash,版本4.3.46(1) - 釋放)。
我也嘗試使用\
之前:
逃脫但我得到一個不同的問題。
01:18:35 awk: cmd. line:1: /\[zzzz\] Static WEB3/|| /WEB1 \:\: WEB2 \:\: WEB3 /{flag=1;next} /end-pattern:/{flag=0}flag
01:18:35 awk: cmd. line:1: ^backslash not last character on line
01:18:35 awk: cmd. line:1: /\[zzzz\] Static WEB3/|| /WEB1 \:\: WEB2 \:\: WEB3 /{flag=1;next} /end-pattern:/{flag=0}flag
01:18:35 awk: cmd. line:1: ^syntax error
我在這裏錯過了什麼?
如果直接使用值而不是變量,腳本是否可以工作? – Sundeep
你能給一個你正在試試這個文件的樣本內容嗎? – Inian
試試這個 - awk「/ \ [zzzz \] \ Static \ $ {VAR3}/||/$ {VAR1} :: $ {VAR2} :: $ {VAR3}/{flag = 1; next}/end -pattern:/ {flag = 0} flag「 –