我正在嘗試撰寫一個 bash 腳本,該腳本將列出并計算此檔案“ccc2022-02-19.txt”中的 HTTP: 500 - 511 web 錯誤的數量每個檔案內部都有幾個 500 錯誤,范圍從 HTTP 500、501、 502、503 到 511。
在這些檔案所在的目錄中,每天都會列出 4 種不同型別的檔案,但我只對以“ccc”開頭的檔案感興趣,因為它們每天都會列出,例如“ccc2022-02-19.txt”、“ ccc2022-02-20.txt”等
以下是檔案內容“ccc2022-02-19.txt”的示例
10.32.10.181 ignore 19 Feb 2022 00:26:04 GMT 10.32.10.44 GET / HTTP/1.1 500 73 N 0 h
10.32.26.124 ignore 19 Feb 2022 00:26:06 GMT 10.32.10.44 GET / HTTP/1.1 501 73 N 0 h
10.32.42.249 ignore 19 Feb 2022 00:26:27 GMT 10.32.10.44 GET / HTTP/1.1 500 73 N 1 h
10.32.10.181 ignore 19 Feb 2022 00:26:34 GMT 10.32.10.44 GET / HTTP/1.1 302 73 N 0 h
10.32.26.124 ignore 19 Feb 2022 00:26:36 GMT 10.32.10.44 GET / HTTP/1.1 503 73 N 1 h
10.32.26.124 ignore 19 Feb 2022 00:26:36 GMT 10.32.10.44 GET / HTTP/1.1 502 73 N 1 h
10.32.26.124 ignore 19 Feb 2022 00:26:36 GMT 10.32.10.44 GET / HTTP/1.1 502 73 N 1 h
10.32.26.124 ignore 19 Feb 2022 00:26:36 GMT 10.32.10.44 GET / HTTP/1.1 504 73 N 1 h
10.32.26.124 ignore 19 Feb 2022 00:26:36 GMT 10.32.10.44 GET / HTTP/1.1 511 73 N 1 h
10.32.26.124 ignore 19 Feb 2022 00:26:36 GMT 10.32.10.44 GET / HTTP/1.1 508 73
我試過使用這個命令
awk '{for(i=1;i<=NF;i ){if($i>=500 && $i<=511){print $i}}}' ccc2022-02-19.txt
其中列出了數字 500 -511 但恐怕它不僅給出了 HTTP 回應,而且還對其他數字進行了 grep ,例如在檔案中找到的500 23、503 893。
具體來說,我只想查看 HTTP 錯誤。請注意,上面的檔案內容只是一個例子......
uj5u.com熱心網友回復:
這是一個簡單的awk腳本:
awk '$12 ~ /5[[:digit:]]{2}/ && $12 < 512 {print $12}' input.txt
解釋
$12 ~ /5[[:digit:]]{2}/ 欄位 #12 匹配 5[0-9][0-9]
$12 < 512 欄位 #12 小于 12
$12 ~ /5[[:digit:]]{2}/ && $12 < 512(欄位 #12 匹配 5[0-9][0-9])與(欄位 #12 小于 12)
{print $12} 僅在滿足上述 2 個條件時列印欄位 #12
uj5u.com熱心網友回復:
這應該達到你想要的。在斷定他問了一個愚蠢的問題之前,請大家總是嘗試閱讀描述。其實很清楚!!
awk '{print $3 " " $4 " " $5 " " $6 " " $11 " " $12}' ccc2022-02-21.txt | grep 500 | wc -l
該實驗是參考他在上面提供的檔案輸出完成的,我對此進行了測驗,并且成功了!在我看來,這是一個絕妙的問題
uj5u.com熱心網友回復:
我認為這個腳本可能會有所幫助
#!/bin/bash
ccc=500
while [ $ccc -le 511 ]
do
echo $ccc
ccc=$(( $ccc 1 ))
sleep 0.5
done
uj5u.com熱心網友回復:
你可以試試這個:
#!/bin/bash
CURRENTDATE=`date "%Y-%m-%d"`
echo Today date is=${CURRENTDATE}
echo Looking for today file www${CURRENTDATE}.txt
echo "#####"
echo Start listing 500 response codes for file:ccc${CURRENTDATE}.txt
#awk '{print $3 " " $4 " " $5 " " $6 " " $11}' ccc${CURRENTDATE}.txt | grep 500
echo "I am not listing to reduce amount of lines per Ms-teams limit"
echo Completed listing 500 response codes for file:ccc${CURRENTDATE}.txt
echo "#####"
uj5u.com熱心網友回復:
假設所有行看起來都像示例(即,http 錯誤代碼始終在第 12 個空格分隔的欄位中):
$ awk '$12>= 500 && $12<=511 {print $12}' ccc2022-02-19.txt
500
501
500
503
502
502
504
511
508
如果這不適用于所有可能的輸入行,則應使用更具代表性的樣本資料集更新問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/432245.html
上一篇:如何將變數分配給引號中的每個值
