先日行ってきた第24回シェル芸勉強会で、タイトルのような特定の列の値を元に、区切り文字を入れてグループ分けするという処理があったので、忘れないように残しておく。
例えば、以下のようなファイルがあったとする。
[root@BS-PUB-CENT7-01 ~]# cat /tmp/test.txt
CCCC 23
AAAA 123
BBBB 244
BBBB 2233
AAAA 444
BBBB 2435
AAAA 244
DDDD 888
CCCC 53534
AAAA 4456
このファイルについて、1列目の値に応じてソートしなおし、それぞれの間に区切り文字を入れるには、以下のようにawkコマンドを実行する。
awk '{if($1!=a){print "--";print;a=$1}else{print}}END{print "--"}'
[root@BS-PUB-CENT7-01 ~]# cat /tmp/test.txt
CCCC 23
AAAA 123
BBBB 244
BBBB 2233
AAAA 444
BBBB 2435
AAAA 244
DDDD 888
CCCC 53534
AAAA 4456
[root@BS-PUB-CENT7-01 ~]# sort /tmp/test.txt | awk '{if($1!=a){print "--";print;a=$1}else{print}}END{print "--"}'
--
AAAA 123
AAAA 244
AAAA 444
AAAA 4456
--
BBBB 2233
BBBB 2435
BBBB 244
--
CCCC 23
CCCC 53534
--
DDDD 888
--