Với gawk
, bạn có thể sử dụng chức năng khớp:
x="hey there how are you"
echo "$x" |awk --re-interval '{match($0,/(.{4})how(.{4})/,a);print a[1],a[2]}'
ere are
Nếu bạn ổn với perl
giải pháp linh hoạt hơn: Sau đây sẽ in ba ký tự trước mẫu tiếp theo mẫu thực tế và sau đó là 5 ký tự sau mẫu.
echo hey there how are you |perl -lne 'print "$1$2$3" if /(.{3})(there)(.{5})/'
ey there how
Điều này cũng có thể được áp dụng cho các từ thay vì chỉ các ký tự. Theo dõi sẽ in một từ trước chuỗi kết hợp thực tế.
echo hey there how are you |perl -lne 'print $1 if /(\w+) there/'
hey
Sau đây sẽ in một từ sau mẫu:
echo hey there how are you |perl -lne 'print $2 if /(\w+) there (\w+)/'
how
Sau đây sẽ in một từ trước mẫu, sau đó là từ thực tế và sau đó một từ sau mẫu:
echo hey there how are you |perl -lne 'print "$1$2$3" if /(\w+)( there )(\w+)/'
hey there how