ไพพ์รหัสทางออก grep ออกไป


6

เมื่อฉันต้องระงับเอาต์พุตบางประเภทเช่น

foo | grep -v bar

แต่บางครั้ง foo ให้เท่านั้น:

bar
bar
bar...

grep จะส่งคืน -1 ฉันจะแปลงรหัสทางออก 1 เป็น 0 ได้อย่างไร

คำตอบ:


8

คุณสามารถลองใช้ท่อผ่านสิ่งอื่นเช่น catเพื่อกำจัดรหัสทางออกจาก grep - ซึ่งอาจเป็นค้อนที่ใหญ่กว่าที่คุณต้องการ


และสิ่งนี้ดูเหมือนว่าจะเป็นไปตาม Posix
math

8
คุณสามารถทำได้ || true หากคุณพยายามหลีกเลี่ยงความล้มเหลวภายใต้ set -e
Daenyth

@Denenyth แน่นอนว่าการเปลี่ยนแปลง ทุกๆ รหัสออกที่ไม่ใช่ศูนย์ถึง 0 ไม่ใช่เพียง 1
Marnix Klooster

0

อย่างน้อยใน bash คุณสามารถใช้

foo || (EC=$?; if [ $EC -ne 1 ]; then exit $EC; fi)

สิ่งนี้จะเปลี่ยนรหัสออก 1 ถึง 0 และจะไม่มีอะไรเปลี่ยนแปลง

(อาจไม่สอดคล้องกับ POSIX แต่อาจเป็นรุ่นที่สอดคล้องกับ POSIX อยู่)

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