İle gawk
, eşleştirme işlevini kullanabilirsiniz:
x="hey there how are you"
echo "$x" |awk --re-interval '{match($0,/(.{4})how(.{4})/,a);print a[1],a[2]}'
ere are
Tamam ise perl
, daha esnek bir çözüm: Aşağıdaki, desenden önce üç karakter, ardından gerçek desen ve ardından desenden 5 karakter basacaktır.
echo hey there how are you |perl -lne 'print "$1$2$3" if /(.{3})(there)(.{5})/'
ey there how
Bu, yalnızca karakterler yerine sözcüklere de uygulanabilir. Takip etmek, gerçek eşleme dizesinden önce bir kelime yazdıracaktır.
echo hey there how are you |perl -lne 'print $1 if /(\w+) there/'
hey
Kalıptan sonra bir kelime yazdırılır:
echo hey there how are you |perl -lne 'print $2 if /(\w+) there (\w+)/'
how
Aşağıda, desenden önce bir kelime, ardından gerçek kelime ve sonra desenden sonra bir kelime yazdırılacaktır:
echo hey there how are you |perl -lne 'print "$1$2$3" if /(\w+)( there )(\w+)/'
hey there how