Thay thế cho 'đầu' mà không thoát?


13

Tôi cần một tiện ích sẽ in n dòng đầu tiên, nhưng sau đó tiếp tục chạy, hút phần còn lại của dòng, nhưng không in chúng. Tôi sử dụng nó để không áp đảo thiết bị đầu cuối với đầu ra của một quá trình cần tiếp tục chạy (nó ghi kết quả vào một tệp).

Tôi hình dung mình có thể làm được process | {head -n 100; cat > /dev/null}, nhưng có gì thanh lịch hơn không?


2
Quá trình sẽ tiếp tục sau khi đầu, nó sẽ không in nữa đến thiết bị đầu cuối.
123

7
Vấn đề gì bạn thực sự đang cố gắng giải quyết?
Satō Katsura

2
Bạn có ý nghĩa gì để hút chúng? Nếu bạn chỉ cần đầu ống, thì đầu ra còn lại sẽ bị loại bỏ.
Julie Pelletier

7
@JuliePelletier và thiết bị xuất chuẩn sẽ được đóng và các chương trình được viết tốt (những chương trình chỉ ghi vào thiết bị xuất chuẩn, dù sao) sẽ nhận thấy điều đó và chấm dứt sớm.
cas

@castrap '' PIPE
Satō Katsura

Câu trả lời:


22

Để tiếp tục "hút" đầu ra processtrong khi chỉ in 100 dòng đầu tiên (hoặc bất cứ thứ gì):

process | awk 'NR<=100'

Hoặc là:

process | sed -n '1,100p'

13
Tôi thường chỉ sử dụng... | tee /dev/null | head ...
David Schwartz

2
@DavidSchwartz yep - đó là những gì tôi sẽ làm. Thích hợp hơn nhiều, vì bạn cũng có thể kết xuất tất cả đầu ra trong một tệp và kiểm tra nó tại một thời điểm sau đó. Bạn không bao giờ biết khi nào sẽ cần thiết - tệ hơn, bạn có một tập tin mà bạn thỉnh thoảng ghi đè lên, tốt nhất, bạn có thể sử dụng nó như một bản ghi để phân tích những gì / tại sao xảy ra.
VLAZ
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.