ฉันมีคำสั่งบางอย่างที่สร้างเอาต์พุตโดยไม่มีบรรทัดใหม่ในตอนท้ายเช่นนี้
Myprompt$ somecmd
dksfjdl
dsfjdlkfj
dsfjdkfj
dfjdkfjMyprompt$
ตอนนี้ฉันเอาชนะมันได้โดยวิธีนี้somecmd | sed 's/$/\n/' | tr -s '\n'
มีวิธีที่ดีกว่าไหม?
ฉันมีคำสั่งบางอย่างที่สร้างเอาต์พุตโดยไม่มีบรรทัดใหม่ในตอนท้ายเช่นนี้
Myprompt$ somecmd
dksfjdl
dsfjdlkfj
dsfjdkfj
dfjdkfjMyprompt$
ตอนนี้ฉันเอาชนะมันได้โดยวิธีนี้somecmd | sed 's/$/\n/' | tr -s '\n'
มีวิธีที่ดีกว่าไหม?
คำตอบ:
เพียงแค่เรียกใช้ echo หลังจากนั้นก็ควรสร้างขึ้นบรรทัดใหม่
Myprompt$ somecmd ; echo
และถ้าคุณต้องการให้มันกินอย่างอื่นให้รันมันใน sub-shell:
Myprompt$ ( somecmd ; echo ) | someothercmd
หรือ .. ตามที่ @camh ชี้ให้เห็นว่า subshell นั้นไม่จำเป็นจริง ๆ คุณสามารถดำเนินการได้ด้วยรายการคำสั่งในสภาพแวดล้อมเชลล์ปัจจุบันด้วย:
Myprompt$ { somecmd ; echo ; } | someothercmd
awk { print $0 }ฟีดมันผ่านยูทิลิตี้บางอย่างที่อ่านเข้าในสายและสายออกเหมือนใน