ちぎっては投げるブログ

Programming, Android, RaspberryPi, Digital Devices, Kinkuma Hamster...

gawkで正規表現の後方参照

awk

awkは括弧でくくってパターンマッチした一部分を抽出するのは書けないけど、gawk(GNU awk)は書けるらしい

gawk {'print gensub(/パターン/,"置換文字","g",対象文字列)'}
$ echo "abcdef" | gawk {'print gensub(/a(b)c/,"\\1","g",$0)'}
bdef
$ echo "abcdef" | gawk {'print gensub(/a(.*)f/,"\\1","g",$0)'}
bcde

\1の部分が括弧と対応する数

ログファイルから抜き出すときに便利かも。grepsedでも出来そうですね。

sed

echo "abcdef" | sed -E 's/a(.*)f/\1/g'
bcde

-Eオプションがバージョンによってはないみたい。 -eでも大丈夫だった

echo "abcdef" | sed -e 's/a(.*)f/\1/g'
bcde