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

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

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

bash
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と記述されている箇所を検索する。

shell
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」オプションをつける事で、対象のフォルダ内を再帰的に検索してくれる。

shell
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$

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