後方参照


それにしても、カッコでくくって後から使う機能は「後方参照」とか呼ぶみたいですけど、awkとかじゃ使えないんですね。意外。

オリジナルの awk では使えませんが、ほとんどの環境では gawk が動作する (または簡単にインストールできるはず) ですので、gawk 版で書いておきます。

#! /usr/bin/gawk -f
# back_ref.awk - This is a sample script for back reference.

/:/ {
    print gensub(/^([^:]+): (.*)$/, "Header = \\1 / Data = \\2", 1);
}

結果は以下のとおり。

$ gawk -f back_ref.awk back_ref.txt
Header = Date / Data = Tue, 12 Feb 2008 15:20:12 GMT
Header = Server / Data = Apache
Header = Content-Type / Data = text/html; charset=euc-jp
Header = Vary / Data = Accept-Encoding
Header = Connection / Data = close

Perl 版と大きく異なるのが、あくまで置換の gsub() 関数の拡張である gensub() の一部の機能としてのみ後方参照が扱えるところです。
なので、使いどころが難しいところではありますが、使ってみてください。