tra-loi-cau-hoi-phat-trien-web.com

Làm thế nào để đếm dòng trong một tài liệu?

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?

899
Alucard

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
1691
user85509

Để đế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 ...

130
Lauro Oliveira
wc -l <file.txt>

Hoặc là

command | wc -l
67
John Kugelman

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
42
ghostdog74

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.

24
theunamedguy

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 {} +
22
storen

Sử dụng wc:

wc -l <filename>
21
Vivin Paliath

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
13
ggb667

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 đó.

7
Buttle Butkus

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.

6
decimal

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;)

5
talsibony

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.

5
Yogi
wc -l file.txt | cut -f3 -d" "

Chỉ trả về số lượng dòng

4
Umur Kontacı
cat file.log | wc -l | grep -oE '\d+'
  • grep -oE '\d+': Để trả về các số có chữ sốCHỈ.
4
AechoLiu

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.

3
tk3000

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
2
jwebuser

Tôi biết đây là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

https://github.com/danschumann/gimme-lines/tree/master

1
Funkodebat

đế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"

1
Konstantin F

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.

0
Majid Azimi