Linux
跟踪、grep 併計算在一個命令中找到的實例?
我正在跟踪文件輸出並查找具有某些數據的行。我不想將數據輸出到螢幕,而是計算它找到的實例數並將其發送到螢幕。實例的數量可以滾動和增加,或者它可以覆蓋現有的並且僅在它增加時顯示它。那部分並不是很重要,我只需要找到一個執行中的實例數。
我現在的命令是
尾 -f 日誌文件 | grep ‘我想要的數據’
我曾嘗試使用 grep -c 和 wc -l 但沒有給我想要的結果。這個特定的 Linux 發行版沒有 pv 並且無法獲得它。有沒有辦法我可以做到這一點?
GNU awk 可以很容易地做到這一點。
滾動輸出:
tail -f logfile | grep 'stuff to grep for' | awk '{++i;print i}'
您也可以省略 grep 並改用 awk 的正則表達式:
tail -f logfile | awk '/stuff to grep for/ {++i;print i}'
對於單行輸出,您可以預先添加一個 CR,使其再次從行的前面開始(在控制台上工作):
tail -f logfile | awk '/stuff to grep for/ {++i;printf "\r%d",i}'
總是有可靠的
watch
選擇:watch -d grep -c "string" /path/to/file
當您的文件大小超過 100 MB 時,這是理想的選擇。
感謝@sa289 建議使用中間文件:
tail -f /path/to/file |grep "string" > /tmp/intermediate-file & watch -d grep -c "string" /tmp/intermediate-file