ทางเลือก 'หัว' ที่ไม่ออก?


13

ฉันต้องการยูทิลิตี้ที่จะพิมพ์บรรทัดแรกที่ n แต่แล้วก็ยังคงทำงานต่อไปดูดส่วนที่เหลือของบรรทัด แต่ไม่พิมพ์พวกเขา ฉันใช้เพื่อไม่ให้เทอร์มินัลกับผลลัพธ์ของกระบวนการที่ต้องดำเนินการต่อไป (มันเขียนผลลัพธ์ไปยังไฟล์)

ฉันคิดว่าฉันสามารถทำได้process | {head -n 100; cat > /dev/null}แต่มีบางสิ่งที่สวยงามกว่านี้หรือไม่


2
กระบวนการจะดำเนินต่อไปหลังจากที่หัวมันจะไม่พิมพ์อีกต่อไปที่สถานี
123

7
คุณกำลังพยายามแก้ไขปัญหาอะไรจริง ๆ
Satō Katsura

2
คุณหมายถึงอะไรที่จะดูดพวกเขา? หากคุณเพียงไปป์เพื่อมุ่งหน้าเอาต์พุตที่เหลือจะถูกยกเลิก
Julie Pelletier

7
@JuliePelletier และ stdout จะถูกปิดและโปรแกรมที่เขียนขึ้นมาอย่างดี (เฉพาะโปรแกรมที่เขียนถึง stdout เท่านั้น) จะสังเกตเห็นและยุติก่อน
cas

@castrap '' PIPE
Satō Katsura

คำตอบ:


22

หากต้องการดำเนินการ "ดูดข้อมูล" ออกอย่างต่อเนื่องprocessในขณะที่พิมพ์เฉพาะบรรทัด 100 (หรืออะไรก็ตาม) แรก:

process | awk 'NR<=100'

หรือ:

process | sed -n '1,100p'

13
ฉันมักจะใช้... | tee /dev/null | head ...
David Schwartz

2
@DavidSchwartz yep - เป็นสิ่งที่ฉันต้องการ เป็นที่นิยมมากกว่าเนื่องจากคุณสามารถดัมพ์เอาต์พุตทั้งหมดในไฟล์และตรวจสอบในเวลาต่อมา คุณไม่มีทางรู้ว่าจะต้องใช้เวลาไหน - ที่แย่กว่านั้นคือคุณมีไฟล์นั่งทับซึ่งบางครั้งคุณเขียนทับได้ดีที่สุดคุณสามารถใช้มันเป็นบันทึกเพื่อวิเคราะห์ว่าเกิดอะไรขึ้น
VLAZ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.