6 cách đếm số dòng trong tệp Linux

Tác giả sysadmin, T.M.Hai 05, 2023, 09:13:36 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

6 cách đếm số dòng trong tệp Linux


Đếm các dòng, ước tính kích thước.

  • Bạn có thể sử dụng lệnh wc với tùy chọn "-l" để tìm số dòng của tệp (tên tệp wc -l). Điều này cũng sẽ in tên của tập tin.
  • Sự kết hợp của lệnh sed với tùy chọn "-n" cũng có thể cung cấp cho bạn số dòng (tên tệp sed -n '='). Lệnh này sẽ in số dòng mà không có nội dung của tệp.
  • Chạy lệnh awk với biến "NR" tích hợp để lấy số dòng của tệp (tên tệp awk 'END {print NR}').

Bạn muốn đếm số dòng trong tệp Linux? Chúng tôi sẽ cung cấp cho bạn một số cách khác nhau để làm điều đó. Việc đếm số dòng sẽ cung cấp thông tin về kích thước của một tệp nhất định nhỏ hay lớn.

1. Tại sao phải đếm số dòng trong một tập tin?

Giống như tất cả các tệp máy tính, tệp Linux có nhiều kích cỡ khác nhau. Một số tệp lớn và một số tệp nhỏ. Người dùng Linux thường xuyên cần kiểm tra kích thước tệp để quản lý dung lượng ổ đĩa hệ thống và tránh hết dung lượng. Một cách để làm điều này là đếm số dòng mà một tập tin có, mặc dù chỉ là đại khái. Giống như độ dày của một cuốn sách thường cho biết độ dài của nó, số dòng trong một tập tin trong một số trường hợp có thể cho bạn cảm giác tương đối về kích thước của nó.

Việc đếm các dòng của một tập tin rất hữu ích vì nhiều lý do. Bạn có thể xác minh định dạng hoặc cấu trúc của tệp. Nó cũng có thể đo kích thước và độ phức tạp của tệp văn bản, chẳng hạn như tệp mã nguồn, tệp cấu hình hoặc tệp nhật ký.

Số dòng có thể giúp bạn lọc và phân tích đầu ra của các lệnh khác. Ví dụ: người ta có thể phân tích số dòng trong tệp nhật ký hệ thống. Điều này sẽ giúp bạn kiểm tra số lượng lỗi gần đúng có trong tệp nhật ký hệ thống.

Số dòng cũng cho bạn ước tính tổng số mục trong một thư mục. Bằng cách đếm các dòng trong tệp theo thời gian, bạn có thể theo dõi các thay đổi đối với tệp, chẳng hạn như thêm hoặc xóa các dòng. Điều này có thể hữu ích cho việc gỡ lỗi phần mềm hoặc theo dõi các thay đổi đối với tài liệu.

2. Cách đếm dòng trong tệp trên Linux

Linux cung cấp nhiều lệnh và công cụ giúp bạn dễ dàng tính ra có bao nhiêu dòng trong một tệp. Một số lệnh này là wc, sed, grep và awk. Tập lệnh Bash cũng có thể giúp tính toán số dòng trong một tệp. Chúng ta sẽ khám phá từng phương pháp này bằng một ví dụ.

2.1. Đếm từ, dòng và ký tự trong tệp bằng wc

Bạn có muốn một cách đơn giản để đếm số dòng trong một tập tin không? Đơn giản chỉ cần sử dụng lệnh wc. Lệnh này xuất ra số từ, dòng và ký tự trong một tệp.

Hãy xem xét một tệp mẫu, example.txt. Tệp này chứa danh sách một số lệnh Linux dành cho người mới bắt đầu:


Để đếm các dòng của tệp được chỉ định có tên example.txt, hãy thêm cờ -l bằng lệnh wc theo sau là tên tệp:

Mã nguồn [Chọn]
wc -l example.txt

Đầu ra ở trên chỉ hiển thị số dòng. Để biết thông tin chi tiết về tệp, hãy sử dụng lệnh wc mà không cần bất kỳ tùy chọn nào. Lệnh wc, không có cờ, sẽ in số từ, dòng và ký tự của tệp trong một lệnh duy nhất:

Mã nguồn [Chọn]
wc example.txt

Bây giờ, giả sử bạn có ba tệp có tên example.txt, new.txt và new1.txt. Để đếm số dòng của nhiều tệp, chỉ cần sử dụng lệnh wc với tùy chọn -l theo sau là tên tệp.

Mã nguồn [Chọn]
wc -l example.txt new.txt new1.txt

Lệnh wc cũng có thể hiển thị số dòng của tất cả các tệp có trong một thư mục. Để thực hiện việc này, hãy sử dụng lệnh wc với tùy chọn -l theo sau là toán tử dấu hoa thị.

Mã nguồn [Chọn]
wc -l *

Như trong tất cả các trường hợp trên, đầu ra hiển thị tên tệp cùng với số dòng. Để hiển thị số dòng mà không có tên tệp, hãy chạy:

Mã nguồn [Chọn]
wc -l < ��example.txt

Ở đây, lệnh wc sử dụng chuyển hướng đầu vào. Điều này sẽ cung cấp nội dung của tệp ví dụ cho lệnh wc. Sau đó nó trực tiếp đếm các dòng mà không hiển thị tên tệp.

Một cách khác để đếm các dòng trong một tệp là chuyển đầu ra của lệnh cat bằng lệnh wc -l.

Mã nguồn [Chọn]
cat example.txt | | wc -l

2.2. Đếm và hiển thị số dòng của tệp bằng sed

Lệnh sed hoặc trình soạn thảo luồng là một công cụ dòng lệnh thiết yếu để thao tác văn bản trên Linux. Nó thực hiện nhiều thao tác khác nhau trên một tệp, chẳng hạn như chèn, xóa, thay thế hoặc nối thêm văn bản. Lệnh sed lấy đầu vào từ một tệp hoặc đầu vào tiêu chuẩn.

Lệnh sed cũng có thể đếm tổng số dòng của một tệp được chỉ định. Nó có thể lấy các đối số khác nhau để in số dòng.

Chạy lệnh sed với tùy chọn -n và dấu bằng để đếm tuần tự và hiển thị số dòng trên các dòng riêng biệt.

Mã nguồn [Chọn]
sed -n '=' example.txt

Đôi khi, việc lấy tổng số dòng sẽ hiệu quả hơn việc lấy số dòng riêng lẻ cho từng dòng trong tệp. Lệnh sed với các tùy chọn -n và $= có thể đếm và hiển thị tổng số dòng trong tệp. $ = biểu thị dòng cuối cùng của tệp. Nó đảm bảo rằng chỉ có số dòng được in ra đầu ra tiêu chuẩn.

Để có được tổng số dòng trong tệp, hãy sử dụng:

Mã nguồn [Chọn]
sed -n '$=' example.txt

2.3. Sử dụng grep để đếm số dòng trong một file

Lệnh grep được sử dụng cụ thể để tìm kiếm mẫu bên trong tệp. Không chỉ vậy, nó còn có thể cho chúng ta tổng số dòng tương ứng hoặc không tương ứng với mẫu đã xác định. Mẫu được xác định là một biểu thức chính quy chỉ định nội dung cần tìm kiếm.

Nếu bạn không chỉ định tệp, grep sẽ đọc từ đầu vào tiêu chuẩn.

Thêm cờ -c bằng lệnh grep để xác định số dòng khớp với một mẫu cụ thể. Ví dụ: để đếm số dòng trong tệp có chứa từ "Command", hãy chạy:

Mã nguồn [Chọn]
grep -c Command example.txt

Cũng có thể lọc và dễ dàng đếm các dòng không chứa một từ hoặc mẫu cụ thể.

Để làm điều này, hãy sử dụng cờ -v với grep:

Mã nguồn [Chọn]
grep -c -v awk example.txt

Có một mẫu biểu thức chính quy khác (".*") có dấu chấm và dấu hoa thị. Nó khớp với bất kỳ dòng nào có 0 hoặc nhiều lần xuất hiện của bất kỳ ký tự nào. Không giống như hai lệnh trên, nó không tìm kiếm một từ cụ thể. Nó chỉ đơn giản là đếm và xuất ra số dòng trong example.txt có một hoặc nhiều ký tự.

Mã nguồn [Chọn]
grep -c ".*" example.txt
Cờ -c đảm bảo rằng chỉ hiển thị số dòng chứ không hiển thị nội dung dòng thực tế khớp với mẫu.


Để thêm tên tệp vào đầu ra ở trên, chỉ cần thêm cờ -H :

Mã nguồn [Chọn]
grep -Hc ".*" example.txt

2.4. In Tổng số dòng trong một tệp bằng awk

Lệnh awk được sử dụng để xử lý văn bản và làm công cụ trích xuất và báo cáo dữ liệu. Nó đặc biệt mạnh mẽ trong việc khớp mẫu và xử lý các trường và bản ghi.

Bạn có thể sử dụng lệnh awk để đếm số dòng trong một tệp. Nó sử dụng ngôn ngữ lập trình AWK để in tổng số bản ghi (dòng) trong tệp.

Mã nguồn [Chọn]
awk 'END {print NR}' example.txt

Tập lệnh awk đã cho END {print NR} được thực thi sau khi xử lý tất cả các dòng trong tệp example.txt. Tập lệnh hướng dẫn awk in giá trị của NR, đại diện cho tổng số bản ghi (dòng) được xử lý.

2.5. Liệt kê và đếm các dòng trong một file bằng lệnh nl

Lệnh nl thêm số dòng vào nội dung tệp được chỉ định. Nó rất hữu ích để xem hoặc in các tập tin có số dòng. Bạn có thể sử dụng lệnh nl với tên tệp để đếm số dòng trong một tệp được chỉ định.

Mã nguồn [Chọn]
nl example.txt

Lệnh này sẽ hiển thị cả số dòng và nội dung dòng trong tệp example.txt.

Tuy nhiên, đây không phải là cách hiệu quả để lấy số dòng tệp, đặc biệt đối với các tệp lớn. Nó liên quan đến việc xử lý bổ sung và hiển thị đầu ra không cần thiết cho nhiệm vụ cụ thể là đếm dòng. Hãy tưởng tượng một tệp có hàng nghìn dòng và bạn phải cuộn xuống hết để biết tổng số dòng.

Nếu bạn muốn biết tổng số dòng mà không có bất kỳ thông tin nào khác, hãy chuyển đầu ra của lệnh nl bằng tail và awk.

Mã nguồn [Chọn]
nl example.txt | tail -1 | awk '{print $1}'

Lệnh nl thêm số dòng vào đầu mỗi dòng. Sau đó, đầu ra của lệnh nl được nối với lệnh tail, lệnh này hiển thị dòng cuối cùng của đầu vào. Tùy chọn -1 yêu cầu lệnh tail chỉ hiển thị một dòng. Cho đến bây giờ, bạn có kết quả là "10 lệnh uname."

Tiếp theo, đầu ra này được cung cấp làm đầu vào cho lệnh awk, lệnh này sẽ in một trường cụ thể từ đầu vào. Đối số {print $1} yêu cầu lệnh awk in trường đầu tiên, đó là số dòng. Ví dụ: nếu đầu vào là "10 lệnh uname", lệnh awk sẽ in trường đầu tiên, trong trường hợp này là dòng số 10.

2.6. Sử dụng Bash Script để đếm số dòng trong một tệp

Tập lệnh Bash, một công cụ tiện dụng trên hệ thống Linux, thường được sử dụng để tự động hóa các tác vụ. Bạn cũng có thể sử dụng nó để đếm các dòng trong một tập tin. Bạn có thể viết tập lệnh Bash tùy chỉnh, sử dụng lệnh wc để in số dòng của tệp:
 
Mã nguồn [Chọn]
#!/bin/bash
filename=$1
linecount=$(wc -l < "$filename")
echo "The file $filename has $linecount lines."

Tập lệnh Bash này sử dụng lệnh wc với cờ -l. Lệnh wc lấy số lượng dòng và lưu nó vào biến linecount. Ở cuối tập lệnh, một thông báo được gửi đến thiết bị đầu cuối, hiển thị tên tệp và số dòng tương ứng của nó.

Để sử dụng tập lệnh trên, chỉ cần lưu nó dưới dạng tệp có phần mở rộng ".sh" (count_lines.sh) và làm cho nó có thể thực thi được bằng cách sử dụng chmod :

Mã nguồn [Chọn]
chmod +x count_lines.sh

Bây giờ, hãy chạy tập lệnh bằng ký hiệu./ theo sau là tên tập lệnh:

Mã nguồn [Chọn]
./count_lines.sh example.txt
Bạn sẽ nhận được tổng số dòng của tệp example.txt ở đầu ra tiêu chuẩn.


3. Biết hệ thống tệp Linux của bạn từ trong ra ngoài

Trên Linux, điều quan trọng là phải biết các tệp trên hệ thống của bạn. Giống như việc đếm dòng, đếm file Linux trong một thư mục cũng giúp bạn quản lý hệ thống hiệu quả hơn. Điều này sẽ giúp bạn biết những tập tin nào đang chiếm nhiều dung lượng nhất, những gì cần xóa và những gì cần giữ.

Biết cấu trúc tệp Linux cũng rất quan trọng. Hãy xem trụ cột chính của các tệp Linux – các nút. Nếu bạn dùng hết những thứ này trong hệ thống của mình, bạn sẽ có một ngày khó khăn. Chúng rất hạn chế về số lượng và lưu trữ dữ liệu quan trọng trong hệ thống của bạn.

Biết những điều này không chỉ giúp bạn quản lý và thực hiện các nhiệm vụ mà còn giảm bớt các nhiệm vụ bảo trì hệ thống.