Vimには、外部コマンドの実行結果でテキストを置換する機能がある。
これを使えば、コマンド上ではawkでサクッとやりたくなるようなテキスト処理もVim上でできる。
例えば、以下のようなテキストをawkで処理する場合を考える。
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
これらの行をビジュアルモードで選択し、その状態から:!awk
を押下し処理を記述することで、選択行を任意のawkスクリプトに食わせて処理した結果に置換できる。
:'<,'>!awk '{print $2}'
数値の羅列の中から、2列目の平均値を算出するなどの場合でも楽に記述可能。
:'<,'>!awk '{ sum += $2; num++ } END { print sum/num }'
ビジュアルモードからでは無く、コマンド中で処理する行を指定してもOK
:1,3!awk '{print $2}'