Cách bỏ qua dòng đầu tiên của tệp bằng cách sử dụng `awk`

How Skip First Line File Using Awk



Có nhiều cách sử dụng lệnh `awk` trong Linux. Ví dụ, nó có thể được sử dụng để in nội dung của một tệp văn bản. Dòng đầu tiên của nhiều tệp văn bản chứa tiêu đề của tệp và đôi khi, phải bỏ qua dòng đầu tiên khi in nội dung của tệp. Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách thực hiện tác vụ này bằng cách sử dụng lệnh `awk`.

Tạo một tệp văn bản

Để làm theo hướng dẫn này, hãy tạo tệp văn bản được phân cách bằng tab có tên booklist.txt với nội dung sau đây. Tệp này chứa danh sách các cuốn sách với các tác giả tương ứng của chúng. Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách in các phần khác nhau của tệp này sau khi bỏ qua dòng đầu tiên.







An ninh mạng với bash Paul Troncone, Carl Albing

Dòng lệnh Kung Fu Jason Cannon

Gian hàng Travis dòng lệnh Linux

Bash trong các bước đơn giản Mike McGrath

Unix trong các bước đơn giản Mike McGrath

Ví dụ 1: Bỏ qua dòng đầu tiên của tệp sử dụng NR và toán tử ‘>’

Biến NR cho biết số lượng bản ghi trong một tệp. Lệnh `awk` sau đây sử dụng biến NR để bỏ qua dòng đầu tiên của tệp. Giá trị của NR là 1 cho dòng đầu tiên. Lệnh sau sẽ in các dòng có giá trị NR lớn hơn 1.



$con mèobooklist.txt

$awk '(KHÔNG> 1)'booklist.txt

Kết quả sau sẽ được tạo ra sau khi chạy các lệnh trên. Đầu ra bao gồm tất cả các dòng khác với dòng đầu tiên của tệp.







Ví dụ 2: Bỏ qua dòng đầu tiên bằng cách sử dụng NR và toán tử ‘! =’

Lệnh `awk` sau đây tương tự như trong ví dụ trước. Tuy nhiên, toán tử so sánh ‘! =’ Được sử dụng ở đây thay vì ‘>’.

$con mèobooklist.txt

$awk 'NR! = 1'booklist.txt

Kết quả sau sẽ được tạo ra sau khi chạy các lệnh trên. Kết quả hiển thị tất cả các dòng khác với dòng đầu tiên của tệp.



Ví dụ 3: Bỏ qua dòng đầu tiên của tệp bằng cách sử dụng câu lệnh điều kiện

Lệnh `awk` sau sẽ in các dòng của tệp nếu câu lệnh if là đúng. Ở đây, câu lệnh if sẽ chỉ đúng khi giá trị NR không bằng 1.

$con mèobooklist.txt

$awk '{if (NR! = 1) {print}}'booklist.txt

Kết quả sau sẽ được tạo ra sau khi chạy các lệnh trên. Đầu ra bao gồm tất cả các dòng ngoại trừ dòng đầu tiên của tệp.

Ví dụ 4: In tên sách từ tệp nhưng bỏ qua dòng đầu tiên

Hai lệnh `awk` được sử dụng trong ví dụ này để in tất cả các tên sách ngoại trừ tên đầu tiên. Lệnh `awk` sẽ đọc cột đầu tiên từ tệp dựa trên dấu phân tách trường ( t) và gửi kết quả đến lệnh` awk` thứ hai. Lệnh `awk` thứ hai sẽ in kết quả đầu ra mong muốn.

$con mèobooklist.txt

$awk -NS 'NS' '{in $ 1}'booklist.txt| awk 'NR! = 1 print}'

Kết quả sau sẽ được tạo ra sau khi chạy các lệnh trên. Kết quả hiển thị tất cả các tên sách ngoại trừ tên của cuốn sách đầu tiên.

Ví dụ 5: Định dạng nội dung tệp sau khi bỏ qua dòng đầu tiên

Tùy chọn ‘-F’, biến NR và hàm printf được sử dụng trong lệnh `awk` sau đây để tạo đầu ra được định dạng sau khi bỏ qua dòng đầu tiên. Lệnh sẽ chia nội dung tệp thành các cột dựa trên t, và printf sẽ in cột đầu tiên và cột thứ hai khi giá trị NR ít nhất là 2.

$con mèobooklist.txt

$awk -NS 'NS' 'NR> = 2 {printf'% 30s% 20s n ', $ 1, $ 2}'booklist.txt

Kết quả sau sẽ được tạo ra sau khi chạy các lệnh trên. Đầu ra hiển thị nội dung được định dạng của tệp, không bao gồm dòng đầu tiên của tệp.

Ví dụ 6: In tên sách sau khi bỏ qua dòng đầu tiên bằng cách sử dụng NR và NF

Lệnh `awk` sau đây sử dụng tùy chọn‘ -F ’và NR và NF để in tên sách sau khi bỏ qua cuốn sách đầu tiên. Tùy chọn ‘-F’ được sử dụng để tách nội dung của tệp dựa trên t. NR được sử dụng để bỏ qua dòng đầu tiên và NF chỉ được sử dụng để in cột đầu tiên.

$con mèobooklist.txt

$awk -NS 'NS' 'NR> 1 && NF = 1'booklist.txt

Kết quả sau sẽ được tạo ra sau khi chạy các lệnh trên. Đầu ra bao gồm tất cả các tên sách trong tệp ngoại trừ tên của cuốn sách đầu tiên.

Ví dụ 7: In tên tác giả đã định dạng sau khi bỏ qua dòng đầu tiên

Lệnh `awk` sau đây sử dụng tùy chọn‘ -F ’và một câu lệnh điều kiện để in tên tác giả sau khi bỏ qua dòng đầu tiên. Ở đây, giá trị NR được sử dụng trong điều kiện if. Ở đây, Tên tác giả: n n sẽ được in ở dòng đầu tiên thay vì nội dung từ dòng đầu tiên. Tên của tác giả trong tệp sẽ được in cho các giá trị khác của NR.

$con mèobooklist.txt

$awk -NS 'NS' '{if (NR == 1) printf' nTên tác giả: n n '; khác printf '% s n', $ 2} 'booklist.txt

Kết quả sau sẽ được tạo ra sau khi chạy các lệnh trên. Kết quả hiển thị văn bản, Tên tác giả: với một dòng mới và tất cả các tên tác giả được in trừ tên đầu tiên.

Phần kết luận

Có thể bỏ qua dòng đầu tiên của tệp bằng cách sử dụng các lệnh Linux khác nhau. Như được hiển thị trong hướng dẫn này, có nhiều cách khác nhau để bỏ qua dòng đầu tiên của tệp bằng cách sử dụng lệnh `awk`. Đáng chú ý, biến NR của lệnh `awk` có thể được sử dụng để bỏ qua dòng đầu tiên của bất kỳ tệp nào.