đếm số dòng trong đầu ra thiết bị đầu cuối


265

không thể tìm thấy điều này trên SO. Tôi đã chạy lệnh sau trong thiết bị đầu cuối:

>> grep -Rl "curl" ./

và điều này sẽ hiển thị danh sách các tập tin xuất hiện từ khóa curl. Tôi muốn đếm số lượng tập tin. Cách đầu tiên tôi có thể nghĩ đến, là đếm số lượng dòng trong đầu ra đi kèm trong thiết bị đầu cuối. Làm thế nào tôi có thể làm điều đó?


40
Bản thân grep cũng có -ccờ trả về số đếm
EaterOfCode

Câu trả lời:


476

Chuyển kết quả sang wcsử dụng công tắc -l( đếm dòng ):

grep -Rl "curl" ./ | wc -l

1
Tôi đã sử dụng grep "" -cnhưng đây là một số đẹp hơn nhiều :)
ninhenzo64

3
Cần lưu ý rằng thủ thuật đường ống đến wc này sẽ hoạt động cho bất kỳ đầu ra nào, không chỉ đầu ra grep. Ví dụ, nó có thể được kết hợp với một git diff.
Jason L.

1
Tại sao đây là câu trả lời được chấp nhận? Như một số ý kiến ​​đã đề cập đến chức năng xây dựng grep -cnên được sử dụng thay vì dẫn đầu ra sang một chương trình khác. Ví dụ, bạn thậm chí sẽ không thay đổi các ký tự trong tài liệu Word của mình bằng một trình soạn thảo văn bản khác ngoài Word, phải không?
Michael P

57

Đặt bình luận của EaterOfCode ở đây làm câu trả lời.

Bản thân grep cũng có cờ -c chỉ trả về số đếm

Vì vậy, lệnh và đầu ra có thể trông như thế này.

$ grep -Rl "curl" ./ -c
24

BIÊN TẬP:

Mặc dù câu trả lời này có thể ngắn hơn và do đó có vẻ tốt hơn câu trả lời được chấp nhận (đó là sử dụng wc). Tôi không đồng ý với điều này nữa. Tôi cảm thấy như nhớ rằng bạn có thể đếm các dòng bằng đường ống sẽ wc -lhữu ích hơn nhiều vì bạn cũng có thể sử dụng nó với các chương trình khác grep.


5

Đường ống đến 'wc' có thể tốt hơn NẾU dòng cuối cùng kết thúc bằng một dòng mới (tôi biết rằng trong trường hợp này, nó sẽ)
Tuy nhiên, nếu dòng cuối cùng không kết thúc với dòng mới 'wc -l' sẽ trả lại kết quả sai.

Ví dụ:

$ echo "asd" | wc -l

Sẽ trở lại 1

$ echo -n "asd" | wc -l

Sẽ trở lại 0


Vì vậy, những gì tôi thường sử dụng là grep <anything> -c

$ echo "asd" | grep "^.*$" -c
1

$ echo -n "asd" | grep "^.*$" -c
1

Điều này gần với thực tế hơn những gì wc -lsẽ trở lại.

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.