Có cách nào dưới linux/terminal để đếm, số lần char f xảy ra trong một tệp văn bản thuần túy không?Số lần xuất hiện của một char trong tập tin văn bản thuần túy
Trả lời
Làm thế nào về thi s:
fgrep -o f <file> | wc -l
Lưu ý: Bên cạnh đó dễ nhớ hơn/sao chép và tùy chỉnh, đây là khoảng ba lần (xin lỗi, chỉnh sửa! làm hỏng thử nghiệm đầu tiên) nhanh hơn câu trả lời của Vereb.
Cái này không hoạt động nếu bạn cần đếm các ký tự' \ r' hoặc '\ n'; câu trả lời 'tr -cd f' làm việc cho điều đó. – bjnord
Để đếm một số ký tự, ví dụ: 'a',' b' và 'c', sử dụng' egrep': 'egrep -o 'a | b | c'
Ngoài ra, hãy cẩn thận để KHÔNG sử dụng 'wc -c' như trong câu trả lời' tr': vì dòng đầu ra 'grep' theo dòng,' wc' sẽ tính các dòng cuối cùng làm ký tự (do đó nhân đôi số ký tự). –
echo $(cat <file> | wc -c) - $(cat <file> | tr -d 'A' | wc -c) | bc
nơi A là nhân vật
Thời gian cho lệnh này với một tập tin với 4,9 MB và 1100000 lần xuất hiện của nhân vật đã tìm kiếm:
real 0m0.168s
user 0m0.059s
sys 0m0.115s
Điều này sẽ nhanh hơn một phần ba nếu bạn lấy ra 'cat' s không cần thiết, đặt tên tập tin làm đối số cho' wc' và 'tr'. – Cascabel
tiếc là tr chỉ hoạt động trên đầu vào tiêu chuẩn – Vereb
Nếu bạn thực sự muốn tối ưu hóa điều này, hãy đọc tệp một lần: echo $ (stat -c% s
tr -d '\n' < file | sed 's/A/A\n/g' | wc -l
Thay thế hai lần xuất hiện của "A" với ký tự của bạn và "tệp" với tệp đầu vào của bạn.
tr -d '\n' < file
: loại bỏ dòng mớised 's/A/A\n/g
: thêm một dòng mới sau mỗi lần xảy ra "A"wc -l
: đếm số dòng
Ví dụ:
$ cat file
abcdefgabcdefgababababbbba
1234gabca
$ tr -d '\n' < file | sed 's/a/a\n/g' | wc -l
9
Nếu tất cả các bạn cần làm là đếm số lượng các dòng có chứa nhân vật của bạn, điều này sẽ làm việc:
grep -c 'f' myfile
Tuy nhiên, nó sẽ tính nhiều lần xuất hiện của 'f' trên dòng giống như một trận đấu duy nhất.
thậm chí nhanh hơn:
tr -cd f < file | wc -c
Thời gian cho lệnh này với một tập tin với 4,9 MB và 1100000 lần xuất hiện của nhân vật đã tìm kiếm:
real 0m0.089s
user 0m0.057s
sys 0m0.027s
Thời Vereb câu trả lời với echo
, cat
, tr
và bc
cho cùng một tệp:
real 0m0.168s
user 0m0.059s
sys 0m0.115s
Thời gian cho Rob Hruska câu trả lời với tr
, sed
và wc
cho cùng một tập tin:
real 0m0.465s
user 0m0.411s
sys 0m0.080s
Thời Jefromi câu trả lời với fgrep
và wc
cho cùng một file:
real 0m0.522s
user 0m0.477s
sys 0m0.023s
Để đếm một số ký tự, ví dụ: 'a',' b' và 'c':' tr -cd abc
Bạn đã lưu tôi tìm cú pháp đúng cho 'tr'! – Pysis
- 1. Truy xuất tập lệnh văn bản thuần túy từ tập lệnh bash được biên dịch
- 2. Hiển thị văn bản thuần túy trong ứng dụng Android
- 3. Biến NSAttributedString thành văn bản thuần túy
- 4. Đánh dấu xuống văn bản thuần túy trong Ruby?
- 5. Chuyển đổi ASCII thành văn bản thuần túy trong PHP
- 6. RTF đến Văn bản thuần túy trong Java
- 7. Gửi email văn bản thuần túy bằng PHPMailer
- 8. Cách chuyển đổi reStructuredText thành văn bản thuần túy
- 9. Hiển thị vcard php dưới dạng văn bản thuần túy
- 10. Phiên bản byte thuần túy của strstr?
- 11. Mật khẩu văn bản thuần túy qua HTTPS
- 12. Làm cách nào để chèn văn bản thuần túy?
- 13. Gửi bản tin HTML với dự phòng thuần văn bản
- 14. Sử dụng regex để trích xuất URL từ văn bản thuần túy với Perl
- 15. Rsync: thực hiện Ruby thuần túy?
- 16. HTML tới văn bản thuần túy (cho email)
- 17. Số lần xuất hiện của một ký tự trong NSString
- 18. Regex: Số lần xuất hiện số lẻ của một từ
- 19. Làm thế nào để viết văn bản vào một tập tin văn bản bằng Photoshop JavaScript?
- 20. Làm cách nào để tìm nạp nội dung văn bản thuần túy trực tiếp của etherpad?
- 21. Đọc toàn bộ tập tin văn bản thành một mảng char trong C
- 22. Đọc tập tin văn bản thành một mảng char trong Java
- 23. Thực hiện lại Java thuần túy của GraphViz?
- 24. Làm cách nào để thêm một 'nút văn bản thuần túy' vào biểu mẫu zend?
- 25. Cách tạo tệp văn bản thuần túy trong GW-BASIC 2.01?
- 26. Đọc một tập tin văn bản với jQuery
- 27. Có ổn không khi thông tin đăng nhập cơ sở dữ liệu được lưu trữ trong văn bản thuần túy?
- 28. python chuyển đổi tài liệu văn phòng microsoft sang văn bản thuần túy trên linux
- 29. Trích xuất thông tin từ Văn bản thuần tuý và Viết sang XML Sử dụng DOM
- 30. Thực hiện java thuần túy của lớp java.lang.Math
thuộc về superuser – Malfist
Về mặt kỹ thuật, điều này có thể được coi là sh/bash/etc. câu hỏi lập trình, vì vậy tôi nghĩ rằng nó có giá trị ở một trong hai nơi. –
@Rob Hruska: vâng, tôi cũng nghĩ là lập trình bash ... @abrashka: câu trả lời cho câu hỏi đầu tiên và thứ hai là "KHÔNG"! – cupakob