ในกรณีปกติ sed
สามารถแก้ไขสตรีมจากคำสั่งอื่นได้ง่ายๆ โดยการไพพ์:
./somecommand | sed 's/xx/yy/g'
อย่างไรก็ตาม คำสั่ง sed
ที่ฉันใช้นั้นซับซ้อนเล็กน้อย ก่อนหน้านี้ ฉันได้รับความช่วยเหลือในการเพิ่มประสิทธิภาพ sed
สำหรับกรณีการใช้งานเฉพาะ: เพิ่มประสิทธิภาพเชลล์สคริปต์ สำหรับการเปลี่ยน sed หลายรายการ
ผลลัพธ์สุดท้ายคือสำหรับกรณีการใช้งานของฉัน คำสั่ง sed
ต่อไปนี้เหมาะสมที่สุด:
./somecommand > file
sed -e 's/^/s|/; s/$/|g/;' replacement_list | sed -r -f - -i file
โดยพื้นฐานแล้ว คำสั่ง sed
แรกจะสร้างรายการการดำเนินการ sed จากไฟล์ที่มีการแทนที่คู่กัน คำสั่ง sed
ที่สองจะใช้สตรีมผ่านการวางท่อ และใช้ตัวเลือก -f
เพื่อประมวลผลไฟล์
สิ่งต่าง ๆ เปลี่ยนไปเล็กน้อยตั้งแต่นั้นมา และตอนนี้ฉันจัดการเพื่อให้ somecommand
แสดงผลผลลัพธ์เป็น stdout
แทนที่จะเขียนลงไฟล์ แต่ฉันไม่สามารถคิดวิธีเขียนชุดคำสั่งข้างต้นใหม่ได้อย่างถูกต้อง ส่วนหนึ่งของความยากคือคำสั่ง sed
ที่สองใช้สตรีมจากคำสั่ง sed
แรกอยู่แล้ว
สิ่งหนึ่งที่ฉันได้ลองคือกำหนด stdout
ของ somecommand
ให้กับตัวแปรและพยายาม <<<
ลงในคำสั่ง sed
ที่สอง อย่างไรก็ตามนั่นไม่ได้ผล