วิธีการหยุด `grep 'จากการตัดทอนเอาต์พุตท่อ


2

มีวิธีใดที่จะมีechoที่ส่วนท้ายของไพพ์เพียงต่อท้ายเอาต์พุตปัจจุบันแทนที่จะลบทั้งหมดหรือไม่? ตัวอย่างเช่นฉันจะเก็บเอาท์พุทของฉันcatและgrepและเพิ่ม "END OF OUTPUT" ในตอนท้ายของเอาต์พุตจากไพพ์เดียวกันได้อย่างไร:

$ cat file.txt | grep 'foo' | echo "END OF OUTPUT"
something foo 
foo
foo something
END OF OUTPUT

คล้ายกับวิธีการcat -ทำงาน:

echo "START OF OUTPUT" | cat - file.txt

2
grepไม่ได้ตัดทอนเอาต์พุตไพพ์ echoไม่อ่านอินพุตมาตรฐาน
cjm

คำตอบ:


6

แบบนี้:

{ grep foo file.txt; echo END OF OUTPUT; } > output.txt

กลุ่มคำสั่งนั้นโดยไม่ต้องเริ่มเชลล์ย่อย (ยกเว้นเชลล์เป้าหมาย)

คุณสามารถทำได้:

grep foo file.txt | cat - <(echo END OF OUTPUT) > output.txt

(ด้วย ksh, bash หรือ zsh) แต่นั่นสร้างกระบวนการพิเศษและท่อเพิ่มเติมอีกสองสามอันเพื่อไม่ให้เกิดประโยชน์เพิ่มเติม



โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.