ด้วยgawk
, คุณสามารถใช้ฟังก์ชั่นการจับคู่:
x="hey there how are you"
echo "$x" |awk --re-interval '{match($0,/(.{4})how(.{4})/,a);print a[1],a[2]}'
ere are
หากคุณตกลงperl
โซลูชันที่ยืดหยุ่นมากขึ้น: การติดตามจะพิมพ์อักขระสามตัวก่อนรูปแบบตามด้วยรูปแบบจริงและจากนั้น 5 อักขระหลังรูปแบบ
echo hey there how are you |perl -lne 'print "$1$2$3" if /(.{3})(there)(.{5})/'
ey there how
สิ่งนี้สามารถนำไปใช้กับคำแทนที่จะเป็นแค่ตัวอักษรการติดตามจะพิมพ์หนึ่งคำก่อนที่จะจับคู่สตริงที่แท้จริง
echo hey there how are you |perl -lne 'print $1 if /(\w+) there/'
hey
การติดตามจะพิมพ์หนึ่งคำหลังจากรูปแบบ:
echo hey there how are you |perl -lne 'print $2 if /(\w+) there (\w+)/'
how
การติดตามต่อไปนี้จะพิมพ์หนึ่งคำก่อนรูปแบบจากนั้นคำที่แท้จริงและจากนั้นหนึ่งคำต่อจากรูปแบบ:
echo hey there how are you |perl -lne 'print "$1$2$3" if /(\w+)( there )(\w+)/'
hey there how