Làm cách nào để sắp xếp bằng các lệnh grep và sort?


14

Tôi muốn tạo một danh sách được sắp xếp của tất cả các dịch vụ TCP được tìm thấy trong tệp /etc/services, chuyển đầu ra của lệnh grep tcp /etc/servicesvào lệnh sort, sau đó chuyển hướng đầu ra của đường ống này vào tệp~/pipelab.txt .

Tôi liên tục nhận được thông báo lỗi rằng đầu ra của tôi sai và tôi không biết tại sao.

Đây là những gì tôi đã thử cuối cùng:

grep tcp /etc/services > ~/pipelab.txt | sort

Câu trả lời:


11

> ~/pipelab.txtrõ ràng thuộc về lệnh ở cùng phía của toán tử đường ống |. Tức là bạn chuyển hướng grepđầu ra đến tập tin thay vì dẫn nó vào sort:

grep tcp /etc/services | sort > ~/pipelab.txt

21

Bạn đang cố gắng chuyển hướng đầu ra của grepmột tệp và chuyển nó sangsort . Bạn không thể làm điều đó, ít nhất là không như thế.

Thay vào đó, bạn thực sự chỉ muốn cho nó ăn để sắp xếp:

grep tcp /etc/services | sort

và sau đó bạn muốn chuyển hướng đầu ra được sắp xếp (nghĩa là những gì sắp ra) vào một tệp, vì vậy bạn đặt chuyển hướng sau khi sắp xếp:

grep tcp /etc/services | sort > ~/pipelab.txt

Cả hai đường ống và chuyển hướng đều hoạt động bằng cách thay đổi nơi đầu ra của lệnh đi. Bạn đã có hai trong số họ chiến đấu với đầu ra từ grep(và cuối cùng, chuyển hướng đã thắng và viết đầu ra chưa được sắp xếp vào tệp của bạn).


Cảm ơn bạn rất nhiều, tôi nghĩ miễn là tôi đặt lệnh sort ở bất cứ nơi nào nó vẫn hoạt động.
dùng72510

1
@ user72510 Đường ống được xử lý theo thứ tự, từ trái sang phải. Điều đó thực sự hữu ích, ví dụ nếu bạn muốn năm dòng đầu ra được sắp xếp, bạn có thể làm grep tcp /etc/services | sort | head -n 5. Điều quan trọng là sortphải được thực hiện trước headhoặc bạn sẽ không có được các dòng bạn muốn.
derobert

Cảm ơn bạn đã giải thích điều đó. Tôi đang tham gia lớp học trực tuyến vì vậy tôi đang tự dạy mình. Thêm vào đó là tôi 40 thì học chậm.
user72510
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.