Đếm tổng số trận đấu bằng grep thay vì chỉ có bao nhiêu dòng khớp


29

Liệu grep có cung cấp một cách để đếm tổng số trận đấu mà nó thực hiện không? Tùy chọn -c chỉ trả về số lượng dòng khớp với biểu thức chính quy, nhưng trong trường hợp này tôi có nhiều kết quả khớp trên mỗi dòng.

Câu trả lời:


29

thử đi:

grep -o -E "your expression" file |wc -l

tốt, -E chỉ là một ví dụ, nó có thể là -P, -F, v.v.

kiểm tra:

kent$  echo "abc xxx yyy"|grep -cP "[a-z]{3}"      
1

kent$  echo "abc xxx yyy"|grep -oP "[a-z]{3}"|wc -l
3

8

Có một cờ -o chỉ ra rằng chỉ có phần phụ phù hợp của dòng nên được in.

Sử dụng kết hợp với wc -l:

grep -o "part of line" | wc -l

người đàn ông grep giải thích nó là tốt.


1

Thay thế cho các câu trả lời khác, chỉ sử dụng grep:

grep -o "seach pattern" somefile.txt | grep -c ""

-O trong grep đầu tiên xuất ra mỗi trận đấu và chỉ là trận đấu - không phải toàn bộ dòng (tất nhiên trừ khi toàn bộ dòng là trận đấu). Các -c trong grep thứ hai sau đó đếm chúng.

Đó là một vài ký tự để gõ (như, 4 hoặc 5), nhưng tôi thấy dễ nhớ hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.