Y's note

Web技術・プロダクトマネジメント・そして経営について

本ブログの更新を停止しており、今後は下記Noteに記載していきます。
https://note.com/yutakikuchi/

ackコマンド

目次

  1. 概要
  2. 設定
    1. port install
    2. コマンドを作る
    3. cpan install
    4. 設定ファイル
  3. コマンドの実例
    1. 通常検索
    2. 検索対象から外す
    3. 全部検索
    4. Pager指定
    5. ファイルタイプ指定
    6. 大小文字区別なし
    7. ファイル検索
    8. ファイルパス名の正規表現指定
    9. ファイルパス+ファイル名の正規表現指定
    10. 完全一致検索
    11. 指定単語の前後行出力
    12. 一致したファイル名を出力
    13. 再起的に検索しない
    14. group指定を外す
    15. 検索対象から特定ディレクトリを外す
    16. 猫キャラ表示
    17. デフォルト指定?




ack

grepack

grep()

grep

grep

grep使find

Perlwindows

Perl使


 

設定

macで試してみる。以下3つのうちどちらかの手順で設定が行える。

1. port install

1行コマンドを実行するだけ。

sudo port install p5-app-ack
2.コマンド作る

自分のローカルフォルダに設置。PATHの設定も必要。

mkdir -p ~/local/bin/
fetch http://betterthangrep.com/ack-standalone > ~/local/bin/ack
chmod +x ~/local/bin/ack
3.cpan install

cpan利用者は楽。

# cpan
cpan> install App::Ack
cpan> exit
設定ファイル

~/.ackrcファイルを設定する。自動でオプションが反映される。

--ignore-dir=bak
--sort-files
--pager=less
--nogroup
--type-add=php=.inc
--type-set=tags=tags

コマンドの実例

オプションは以下のリンクを参照。http://search.cpan.org/dist/ack/ack-base オプションの日本語ドキュメントがほとんど無い(涙)

通常検索

basic使test
ack test
検索対象から外す

grepと同じでvを指定。

ack -v test
全部検索

拡張子無しファイルも検索可能とする。

ack -a test
Pager指定

検索結果をlessで開く。

ack test --pager="less"
ファイルタイプ指定

html
ack --html test

ack --help-type


大小文字区別なし

grepと同じく-iで指定。

ack -i test
ファイル検索

指定したファイル一覧を表示。

ack -f --html
ファイルパス名の正規表現指定

ファイルパス名の検索に正規表現指定が可能。

ack -w test -G /Filter/
ファイルパス+ファイル名の正規表現指定

ファイル指定かつファイルパス名の検索に正規表現指定が可能。-f -Gと一緒。

ack -w test -g /Filter/
完全一致検索

指定した単語の完全一致を検索。

ack -w test
指定単語の前後行出力

testという単語に一致する前後5行までを出力。

ack -C 5 test

grepと同じくB(前行),A(後行)のみも表示可能

ack -B 5 test
ack -A 5 test
一致したファイル名を出力

grep-l
ack -l test

-L
ack -L test
再起的に検索しない

オプション-rが再起的検索指定(おそらくデフォルトで指定)。-nが再起的検索しない。

ack -n test
group指定を外す

結果表示方法の切り替え。ackはデフォルトgroup指定がされており、これにより各ファイルに対しての検索結果がまとめられてしまう。それをgrepのようにgroupを外す事が可能。

ack --nogroup test

通常のack結果

test.html
2:test

test.php
2:echo "test";

test.pl
2:test

nogroup指定結果

test.html:2:test
test.php:2:echo "test";
test.pl:2:test
検索対象から特定ディレクトリを外す

検索対象から特定ディレクトリを外す指定。bakディレクトリを無視する。

ack --ignore-case bak
猫キャラ表示

全然意味ないコマンドなんで無視。

ack --thpppt

結果

_   /|
\'o.O'
=(___)=
   U    ack --thpppt!
デフォルト指定?

以下のオプションはどうやらデフォルトで指定されている様子。

--color : 結果のハイライト
-r : 再起的検索