並べ替え


***record***
TAG1 A
TAG2 B
irrelevant------------------
TAG2 C
TAG3 D
TAG4 E
#
***record***
TAG1 f
TAG2 g
TAG2 h
irrelevant------------------
TAG3 i
TAG4 j
#

というファイルがあり、これを以下のようにしたいというものです。

A TAB B C TAB D TAB E
f TAB g h TAB i TAB j

回答は以下のようなものが上がっています。

/^\*\*\*record/ { tags="" }
/^#/ { print tags }
/^irrelevant/ { next }
{ sep = (t!=$1 ? (tags=="" ? "" : "\t") : " ") }
{ tags = tags sep $2 ; t = $1}