Tôi có những dòng như thế này, và tôi muốn biết tôi thực sự có bao nhiêu dòng ...
09:16:39 AM all 2.00 0.00 4.00 0.00 0.00 0.00 0.00 0.00 94.00
09:16:40 AM all 5.00 0.00 0.00 4.00 0.00 0.00 0.00 0.00 91.00
09:16:41 AM all 0.00 0.00 4.00 0.00 0.00 0.00 0.00 0.00 96.00
09:16:42 AM all 3.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 96.00
09:16:43 AM all 0.00 0.00 1.00 0.00 1.00 0.00 0.00 0.00 98.00
09:16:44 AM all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
09:16:45 AM all 2.00 0.00 6.00 0.00 0.00 0.00 0.00 0.00 92.00
Có cách nào để đếm tất cả chúng bằng các lệnh linux không?
Sử dụng wc
:
wc -l <filename>
Điều này sẽ xuất số lượng dòng trong <filename>
:
$ wc -l /dir/file.txt
3272485 /dir/file.txt
Hoặc, để bỏ qua <filename>
khỏi kết quả, hãy sử dụng wc -l < <filename>
:
$ wc -l < /dir/file.txt
3272485
Bạn cũng có thể chuyển dữ liệu sang wc
:
$ cat /dir/file.txt | wc -l
3272485
$ curl yahoo.com --silent | wc -l
63
Để đếm tất cả các dòng sử dụng:
$ wc -l file
Để lọc và chỉ đếm các dòng có mẫu sử dụng:
$ grep -w "pattern" -c file
Hoặc sử dụng -v để đảo ngược khớp:
$ grep -w "pattern" -c -v file
Xem trang grep man để xem các -e, -i và -x args ...
wc -l <file.txt>
Hoặc là
command | wc -l
có rất nhiều cách. sử dụng wc
là một.
wc -l file
những người khác bao gồm
awk 'END{print NR}' file
sed -n '$=' file
(GNU sed)
grep -c ".*" file
Công cụ wc
là "Bộ đếm từ" trong các hệ điều hành UNIX và UNIX, bạn cũng có thể sử dụng nó để đếm các dòng trong một tệp, bằng cách thêm tùy chọn -l
, vì vậy wc -l foo
sẽ đếm số dòng trong foo
. Bạn cũng có thể tạo đầu ra từ một chương trình như thế này: ls -l | wc -l
, sẽ cho bạn biết có bao nhiêu tệp trong thư mục hiện tại.
Nếu bạn muốn kiểm tra tổng dòng của tất cả các tệp trong một thư mục, bạn có thể sử dụng find và wc:
find . -type f -exec wc -l {} +
Sử dụng wc
:
wc -l <filename>
Nếu tất cả những gì bạn muốn là số lượng dòng (chứ không phải số lượng dòng và tên tệp ngu ngốc quay trở lại):
wc -l < /filepath/filename.ext
Như đã đề cập trước đây, những thứ này cũng hoạt động (nhưng kém hơn vì những lý do khác):
awk 'END{print NR}' file # not on all unixes
sed -n '$=' file # (GNU sed) also not on all unixes
grep -c ".*" file # overkill and probably also slower
Tôi đã sử dụng cái này:
cat myfile.txt | wc -l
Tôi thích nó hơn câu trả lời được chấp nhận vì nó không in tên tệp và bạn không phải sử dụng awk
để sửa nó. Câu trả lời được chấp nhận:
wc -l myfile.txt
Nhưng tôi nghĩ câu trả lời hay nhất là câu trả lời của GGB667:
wc -l < myfile.txt
Tôi có thể sẽ sử dụng nó từ bây giờ. Nó hơi ngắn hơn cách của tôi. Tôi đang đưa ra cách làm cũ của mình trong trường hợp bất cứ ai thích nó. Đầu ra giống nhau với hai phương thức đó.
Sử dụng nl
như thế này:
nl filename
Từ man nl
:
Viết mỗi FILE vào đầu ra tiêu chuẩn, với số dòng được thêm vào. Không có TẬP_TIN hoặc khi TẬP TIN là -, hãy đọc đầu vào tiêu chuẩn.
Tôi đã thấy câu hỏi này trong khi tôi đang tìm cách đếm nhiều dòng tệp, vì vậy nếu bạn muốn đếm nhiều dòng tệp của tệp .txt, bạn có thể thực hiện việc này,
cat *.txt | wc -l
nó cũng sẽ chạy trên một tệp .txt;)
Trên đây là phương pháp ưa thích nhưng lệnh "cat" cũng có thể hữu ích:
cat -n <filename>
Sẽ hiển thị cho bạn toàn bộ nội dung của tập tin với số dòng.
wc -l file.txt | cut -f3 -d" "
Chỉ trả về số lượng dòng
cat file.log | wc -l | grep -oE '\d+'
grep -oE '\d+'
: Để trả về các số có chữ sốCHỈ.Chuyển hướng/Đường ống đầu ra của tệp tới wc -l
sẽ đủ, như sau:
cat /etc/fstab | wc -l
mà sau đó sẽ cung cấp không. chỉ dòng.
Hoặc đếm tất cả các dòng trong thư mục con với mẫu tên tệp (ví dụ: tệp logfile có dấu thời gian trong tên tệp):
wc -l ./**/*_SuccessLog.csv
Tôi biết đây là cũ nhưng vẫn: Đếm các dòng được lọc
Tập tin của tôi trông như:
Number of files sent
Company 1 file: foo.pdf OK
Company 1 file: foo.csv OK
Company 1 file: foo.msg OK
Company 2 file: foo.pdf OK
Company 2 file: foo.csv OK
Company 2 file: foo.msg Error
Company 3 file: foo.pdf OK
Company 3 file: foo.csv OK
Company 3 file: foo.msg Error
Company 4 file: foo.pdf OK
Company 4 file: foo.csv OK
Company 4 file: foo.msg Error
Nếu tôi muốn biết có bao nhiêu tệp được gửi OK:
grep "OK" <filename> | wc -l
OR
grep -c "OK" filename
Tôi vừa làm một chương trình để làm điều này (với node
)
npm install gimme-lines
gimme-lines verbose --exclude=node_modules,public,vendor --exclude_extensions=html
đếm số dòng và lưu trữ kết quả trong biến sử dụng lệnh này:
count=$(wc -l < file.txt) echo "Number of lines: $count"
Như những người khác nói wc -l
là giải pháp tốt nhất, nhưng để tham khảo trong tương lai, bạn có thể sử dụng Perl:
Perl -lne 'END { print $. }'
$.
chứa số dòng và khối END
sẽ thực thi ở cuối tập lệnh.