ฉันไม่แน่ใจว่าทำไมคำถามนี้ถูกแก้ไข " จากไฟล์ " ถึง " จากบรรทัด " ในขณะที่ OP ไม่ได้แยกความเป็นไปได้ในหลาย ๆ บรรทัดแม้ว่าตัวอย่างจะดูเหมือนเป็นหนึ่งบรรทัดเท่านั้น ไม่ว่ามันจะมีประโยชน์อะไรที่จะนำเสนอโซลูชั่นหลายบรรทัดที่นี่
ใช้งานได้สำหรับการข้ามบรรทัด:
from1=consectetuer; to2=elit; a="$(cat file)"; a="$(echo "${a#*"$from1"}")"; echo "$from1${a%%"$to2"*}$to2"
ตัวอย่าง:
[xiaobai@xiaobai tmp]$ cat file
1
abc consectetuer lsl
home
def elit dd
2 consectetuer ABC elit
[xiaobai@xiaobai tmp]$ from1=consectetuer; to2=elit; a="$(cat file)"; a="$(echo "${a#*"$from1"}")"; echo "$from1${a%%"$to2"*}$to2"
consectetuer lsl
home
def elit
[xiaobai@xiaobai tmp]$
การอ้างอิง: การขยายพารามิเตอร์เชลล์
sed
คำสั่งที่สามารถ มันสามารถเป็นได้perl
หรือแม้กระทั่งทุบตีบริสุทธิ์