Làm thế nào để đếm số lần xuất hiện của từ "linux" trong tất cả các tập tin .log ở thư mục hiện tại?
Đáp án đúng: A
Phương án A: grep -o 'linux' *.log | wc -l
- grep -o 'linux' *.log
: Lệnh này tìm kiếm chuỗi "linux" trong tất cả các file *.log. Option -o
chỉ in ra các chuỗi khớp (mỗi chuỗi trên một dòng).
- wc -l
: Đếm số dòng. Do đó, kết quả là số lần chuỗi "linux" xuất hiện trong tất cả các file.
Phương án B: cat *.log | grep 'linux' -c
- cat *.log
: Nối nội dung của tất cả các file *.log thành một luồng.
- grep 'linux' -c
: Đếm số dòng chứa chuỗi "linux". Kết quả là số lượng các dòng có chứa ít nhất một lần từ "linux" trong tất cả các file. Như vậy sẽ không đếm được chính xác số lần xuất hiện của từ "linux".
Phương án C: awk '/linux/ {count++} END {print count}' .log
- Lệnh này sẽ chỉ đọc file ".log" (chú ý dấu chấm ở trước). Như vậy, nó sẽ không tìm kiếm trong tất cả các file .log trong thư mục hiện tại mà chỉ tìm trong một file có tên ".log" (nếu tồn tại).
Phương án D: find . -name '.log' | xargs grep -c 'linux'
- find . -name '.log'
: Tìm tất cả các file có tên ".log" (chú ý dấu chấm ở trước) trong thư mục hiện tại và các thư mục con.
- xargs grep -c 'linux'
: Thực thi lệnh grep -c 'linux'
trên từng file tìm được. Option -c
đếm số dòng chứa chuỗi "linux" trong mỗi file, sau đó in ra số lượng này cho mỗi file.
- Lệnh này cũng không đếm được tổng số lần xuất hiện của từ "linux" trong tất cả các file, mà chỉ đếm số dòng chứa từ "linux" trong mỗi file.
Như vậy, phương án A là đáp án đúng vì nó đếm chính xác số lần từ "linux" xuất hiện trong tất cả các file *.log.