Dengan gawk
, Anda dapat menggunakan fungsi pencocokan:
x="hey there how are you"
echo "$x" |awk --re-interval '{match($0,/(.{4})how(.{4})/,a);print a[1],a[2]}'
ere are
Jika Anda setuju dengan perl
, solusi yang lebih fleksibel: Berikut ini akan mencetak tiga karakter sebelum pola diikuti dengan pola sebenarnya dan kemudian 5 karakter setelah pola.
echo hey there how are you |perl -lne 'print "$1$2$3" if /(.{3})(there)(.{5})/'
ey there how
Ini juga dapat diterapkan ke kata, bukan hanya karakter. Mengikuti akan mencetak satu kata sebelum string yang cocok.
echo hey there how are you |perl -lne 'print $1 if /(\w+) there/'
hey
Berikut ini akan mencetak satu kata setelah pola:
echo hey there how are you |perl -lne 'print $2 if /(\w+) there (\w+)/'
how
Mengikuti akan mencetak satu kata sebelum pola, lalu kata sebenarnya dan kemudian satu kata setelah pola:
echo hey there how are you |perl -lne 'print "$1$2$3" if /(\w+)( there )(\w+)/'
hey there how