キーワードの反転表示をしてくれるgrepのようなコマンド『ack』

今回は、grepのように使えて、検索したキーワードを反転して表示してくれるコマンド『ack』をインストールしてみたのでその内容。 利用する環境はUbuntu 14.04 LTSを用いている。

まずはインストールから。以下のコマンドを実行し、インストールする。

wget http://beyondgrep.com/ack-2.12-single-file
sudo mv ack-2.12-single-file /usr/local/bin/ack
sudo chmod 0755 /usr/local/bin/ack

試しに、以前作成したスクリプトをackしてみることにする。 以下のコマンドを実行し、ifと記述されている箇所を検索する。

test@test-vm-ubuntu:~/work$ cat setip,sh | ack if
IFCFGNIC0="ifcfg-${NIC0}"
IFCFGNIC1="ifcfg-${NIC1}"
if [ -z `cat $LIST | grep "$MYSERIAL_CD"` ]; then
NIC0_HWADDR=`ifconfig $NIC0 | grep HWaddr | awk '{print $5}'`
NIC1_HWADDR=`ifconfig $NIC1 | grep HWaddr | awk '{print $5}'`
#create ifcfg-*
#ifcfg-NIC0
#ifcfg-NIC1
test@test-vm-ubuntu:~/work$

色付きで表示されてわかりやすい。

その他、以下のような使い方も出来る。

フォルダ内のファイルを一気に検索する

「-w」オプションをつける事で、対象のフォルダ内を再帰的に検索してくれる。

test@test-vm-ubuntu:~/work$ ack -w grep
setip,sh
9:MYSERIAL_CD=`dmidecode -t system | grep Serial | awk 'BEGIN { FS=": ";} { print $2}'`
14:if [ -z `cat $LIST | grep "$MYSERIAL_CD"` ]; then
21:HOSTNAME=`cat $LIST | grep "$MYSERIAL_CD" | awk 'BEGIN {FS=","} { print $1 }'`
24:GATEWAY=`cat $LIST | grep "$MYSERIAL_CD" | awk 'BEGIN {FS=","} { print $3 }' | awk 'BEGIN {FS="/"} {print $1}'`
27:NIC0_IPADDR=`cat $LIST | grep "$MYSERIAL_CD" | awk 'BEGIN {FS=","} { print $4 }' | awk 'BEGIN {FS="/"} {print $1}'`
28:NIC0_PREFIX=`cat $LIST | grep "$MYSERIAL_CD" | awk 'BEGIN {FS=","} { print $4 }' | awk 'BEGIN {FS="/"} {print $2}'`
29:NIC0_HWADDR=`ifconfig $NIC0 | grep HWaddr | awk '{print $5}'`
32:NIC1_IPADDR=`cat $LIST | grep "$MYSERIAL_CD" | awk 'BEGIN {FS=","} { print $5 }' | awk 'BEGIN {FS="/"} {print $1}'`
33:NIC1_PREFIX=`cat $LIST | grep "$MYSERIAL_CD" | awk 'BEGIN {FS=","} { print $5 }' | awk 'BEGIN {FS="/"} {print $2}'`
34:NIC1_HWADDR=`ifconfig $NIC1 | grep HWaddr | awk '{print $5}'`

rsync_backup.sh
35: rsync -vv -a --delete ${rsource} ${rsynch} | grep -v " is uptodate"$ >> ${logfile}
test@test-vm-ubuntu:~/work$

うーん、メインのサーバにも入れてしまおうかな?