[ad_1]
grep
là một tiện ích tìm kiếm văn bản có thể hoạt động với đầu vào tiêu chuẩn hoặc nhiều tệp cùng một lúc. Nó được sử dụng để in ra các kết quả phù hợp cho các mẫu, chuỗi hoặc biểu thức chính quy. Nó thường hữu ích để có thể đếm số lượng trận đấu, grep
có thể làm khá dễ dàng.
Đếm các trận đấu với grep
Các grep
lệnh có -c
lá cờ, sẽ đếm số dòng được so khớp và in ra một số. Điều này hữu ích cho nhiều thứ, chẳng hạn như tìm kiếm thông qua các tệp nhật ký để biết số lượng mục nhập từ IP hạt, điểm cuối hoặc từ định danh khác.
grep -c "1.2.3.4" /var/log/nginx/access.log
Tuy nhiên, grep
có thể so khớp nhiều lần trên mỗi dòng. Nếu bạn sử dụng -o
lá cờ, grep
sẽ in ra một dòng mới cho mỗi trận đấu. Điều này không hoạt động với -c
cờ, vì nó sẽ chỉ tính kết quả phù hợp dòngkhông phải nhiều kết quả phù hợp trên mỗi dòng.
Một giải pháp tốt hơn là sử dụng wc
(đếm từ) tiện ích với -l
(dòng) tham số, sẽ đếm số dòng thô được chuyển đến nó qua đầu vào tiêu chuẩn. Sử dụng wc -l
là giải pháp ưa thích vì nó hoạt động với -o
để đếm số lần xuất hiện của chuỗi hoặc mẫu đã cho trên toàn bộ tệp.
grep -o "foo" file | wc -l
Đếm trên nhiều tệp
Một tính năng hay của grep
là khả năng xử lý nhiều tệp cùng một lúc, hoặc được chuyển qua xargs
, tham số hoặc được cung cấp cùng với mở rộng ký tự đại diện. Khi xử lý nhiều tệp, grep
sẽ in ra tên tệp trước trận đấu. Khi đang sử dụng -c
để đếm số dòng phù hợp, nó cũng sẽ in ra các tên tệp:
grep "foo" ./*.txt -cH
Bạn nên luôn sử dụng -H
gắn cờ khi làm việc với khả năng có nhiều tệp, vì nó sẽ luôn in tên tệp ngay cả khi chỉ có một tệp được chuyển đến grep
. Điều này sẽ ngăn quá trình tự động hóa bị phá vỡ nếu bạn phụ thuộc vào tên tệp ở đó.
Nếu bạn muốn sử dụng -o
để đếm nhiều kết quả phù hợp trên mỗi dòng và chuyển đầu ra cho wc -l
bạn sẽ không may có khả năng xem các số cho từng tệp riêng lẻ như với -c
. Tuy nhiên, với một chút tập lệnh, bạn có thể cắt bớt cột đầu tiên với cut
và đếm số lần xuất hiện duy nhất cho mỗi tên tệp với uniq -c
:
grep "foo" ./*.txt -o | cut -d ':' -f 1 | uniq -c
CÓ LIÊN QUAN: Cách giải nén và sắp xếp các cột ra khỏi tệp nhật ký trên Linux
[ad_2]