2012-12-12 42 views
8

lệnh này sẽ hiển thị dòng thứ hai của tập tin:unix- hiển thị dòng thứ hai của tập tin

cat myfile | head -2 | tail -1 

tập tin của tôi chứa các dữ liệu sau đây:

hello 
mark 
this is the head line 
this is the first line 
this is the second line 
this is the last line 

lệnh trên sẽ in các dữ liệu như : mark

Nhưng tôi không thể hiểu điều này bởi vì, đầu -2 được sử dụng để in hai dòng đầu tiên và đuôi -1 in dòng cuối cùng nhưng làm thế nào đến dòng 2 được in !! ???

+4

đuôi chỉ hoạt động trên đầu ra từ đầu và 'đuôi -1' có nghĩa là in dòng cuối cùng của đầu ra nhận được. Trong ngữ cảnh này (trong một đường ống), 'đuôi' không biết rằng tệp của tôi tồn tại. Đường ống của bạn đang hoạt động như được thiết kế và những gì bạn quan sát được coi là một tính năng! ;-). Chúc may mắn. – shellter

Trả lời

8

đuôi hiển thị dòng cuối cùng của đầu ra đầu và dòng cuối cùng của đầu ra đầu tiên là dòng thứ hai của tệp.

Output đầu (đầu vào đuôi):

hello 
mark 

Output của đuôi:

mark 
10

Bạn cũng có thể sử dụng "sed" hoặc "awk" để in một dòng cụ thể:

VÍ DỤ:

sed -n '2p' myfile 

PS: Đối với lệnh "đầu sai 'của tôi' đuôi '- shelltel là chính xác.

+5

Vâng sed. Để có hiệu quả trên các tệp lớn, tôi đề nghị ''2p; 3q'' hoặc' 2 {p; q;} 'hoặc tương tự. – pilcrow

2

Nếu bạn chia nhỏ các thao tác thành các lệnh riêng biệt, nó sẽ trở nên rõ ràng tại sao nó hoạt động theo cách nó hoạt động.

đầu -2 tạo một tệp gồm hai dòng.

linux> head -2 /tmp/x > /tmp/xx 
linux> cat /tmp/xx 
hello 
mark 

đuôi -1 in ra dòng cuối cùng trong tệp.

linux> tail -1 /tmp/xx 
mark 
Các vấn đề liên quan