b請注意,我有一個日誌文件「log1.txt」,其中包含由字符「|」分隔的字段。我想根據具體要求 檢索行,我有另外一個配置文件「code.conf」或者我把在現場5 發現這裏的值是日誌文件:根據條件從文件中提取信息
+++++ ++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++
abc|2| 11| 3| 1000| 13|scql| 0| | | 0| 0| plk| stv| 2| 0
trc|2| 20| 3| 1200| 30|tkgl| 0| pajd|jahd| 0| 0| klm|fdkl|1|0
klm|2| 0| 3| 1300| 19|mlpo| 0| | | 0| 0| qnhd| pkjs| 2| 0
klm|2| 20| 3| 1600| 11|mlpo| 19| | | 0| 0| qnhd| pkjs| 2| 0
++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++
這裏是配置文件「code.conf」
++++++++++++++++++++++++++++++++++++++++++++++++ +++++
1000
1300
1200
1600
++++++++++++++++++++++++++++++++++++++ +++++++++++++++
現在我想從日誌文件中檢索只是對應於這個條件的線路:
如果場2等於「2」,現場4等於「3」,字段5必須包含配置文件中聲明的值之一(字段3不等於「0」或「20」或)或字段8不等於「0」
我試過,但沒有正常工作:
awk -F' *\\| *' 'FNR==NR {a[$1];next} $2==2 && $4==3 && $5 in a && ($3!=0 || $3!=20)|| $8!=0 ' file
輸出應該是:
abc|2| 11| 3| 1000| 13|scql| 0| | | 0| 0| plk| stv| 2| 0
klm|2| 20| 3| 1600| 11|mlpo| 19| | | 0| 0| qnhd| pkjs| 2| 0
我認爲錯誤來自於邏輯
謝謝
如何是1600輸出時,它不是在'code.conf'? – anubhava 2014-10-10 11:30:51
這只是一個錯誤,1600存在code.conf我會添加它 – mond14 2014-10-10 11:35:48