のーずいだんぷ

主に自分用メモですが、もしかしたら誰かの役に立つかもしれません

awkでオプション'OFS'(output field separater)が適用されない

概要

タイトルの通り、以下のようにpsコマンドの情報を整形しようとしたとき、想定した内容にならなかった。

$ ps aux | grep httpd | grep -v grep | awk -F ' '  -v 'OFS=#'  '{print $1 $2}'
apache5768
apache5769
apache5776
apache5777
apache5779
apache6679
root17779

特にエラーはなく、表示も1,2列目が表示されている。

結論

typoレベルのミスで、'{print$1 $2}'の列指定の間にカンマがないことが原因だった。 カンマをいれると...

ps aux | grep httpd | grep -v grep | awk -F ' '  -v 'OFS=#'  '{print $1,$2}'
apache#5768
apache#5769
apache#5776
apache#5777
apache#5779
apache#6679
root#17779

想定どおりに表示された。

ただし、$0で指定した場合はOFSが適用されないのでこれは別途調査しようと思う。(仕様?)