Ack
From Christoph's Personal Wiki
ack is a tool like grep, aimed at programmers with large trees of heterogeneous source code. ack is written purely in Perl, and takes advantage of the power of Perl's regular expressions.
Contents |
Usage
Note: Taken directly from the official website.
- Syntax:
ack [OPTION]... PATTERN [FILES]
- Help:
ack --help
Search for PATTERN in each source file in the tree from cwd on down. If [FILES] is specified, then only those files/directories are checked. ack may also search STDIN, but only if no FILES are specified, or if one of FILES is "-".
Default switches may be specified in ACK_OPTIONS environment variable or an .ackrc file. If you want no dependency on the environment, turn it off with --noenv.
Example:
ack -i select
Searching
-i, --ignore-case- Ignore case distinctions in PATTERN
-v, --invert-match- Invert match: select non-matching lines
-w, --word-regexp- Force PATTERN to match only whole words
-Q, --literal- Quote all metacharacters; PATTERN is literal
Search output
--line=NUM Only print line(s) NUM of each file
-l, --files-with-matches
Only print filenames containing matches
-L, --files-without-match
Only print filenames with no match
-o Show only the part of a line matching PATTERN
(turns off text highlighting)
--passthru Print all lines, whether matching or not
--output=expr Output the evaluation of expr for each line
(turns off text highlighting)
--match PATTERN Specify PATTERN explicitly.
-m, --max-count=NUM Stop searching in each file after NUM matches
-1 Stop searching after one match of any kind
-H, --with-filename Print the filename for each match
-h, --no-filename Suppress the prefixing filename on output
-c, --count Show number of lines matching per file
-A NUM, --after-context=NUM
Print NUM lines of trailing context after matching
lines.
-B NUM, --before-context=NUM
Print NUM lines of leading context before matching
lines.
-C [NUM], --context[=NUM]
Print NUM lines (default 2) of output context.
--print0 Print null byte as separator between filenames,
only works with -f, -g, -l, -L or -c.
File presentation
--pager=COMMAND Pipes all ack output through COMMAND.
Ignored if output is redirected.
--nopager Do not send output through a pager. Cancels any
setting in ~/.ackrc, ACK_PAGER or ACK_PAGER_COLOR.
--[no]heading Print a filename heading above each file's results.
(default: on when used interactively)
--[no]break Print a break between results from different files.
(default: on when used interactively)
--group Same as --heading --break
--nogroup Same as --noheading --nobreak
--[no]color Highlight the matching text (default: on unless output is redirected, or on Windows)
--flush Flush output immediately, even when ack is used
non-interactively (when output goes to a pipe or file).
File finding
-f Only print the files found, without searching.
The PATTERN must not be specified.
-g REGEX Same as -f, but only print files matching REGEX.
--sort-files Sort the found files lexically.
File inclusion/exclusion
-a, --all-types All file types searched;
Ignores CVS, .svn and other ignored directories
-u, --unrestricted All files and directories searched
--[no]ignore-dir=name Add/Remove directory from the list of ignored dirs
-n No descending into subdirectories
-G REGEX Only search files that match REGEX
--perl Include only Perl files.
--type=perl Include only Perl files.
--noperl Exclude Perl files.
--type=noperl Exclude Perl files.
See "ack --help type" for supported filetypes.
--type-add TYPE=.EXTENSION[,.EXT2[,...]]
Files with the given EXTENSION(s) are recognized as
being of (the existing) type TYPE
--type-set TYPE=.EXTENSION[,.EXT2[,...]]
Files with the given EXTENSION(s) are recognized as
being of type TYPE. This replaces an existing
definition for type TYPE.
--[no]follow Follow symlinks. Default is off.
Directories ignored by default: autom4te.cache, blib, _build, .bzr, .cdv, cover_db, CVS, _darcs, ~.dep, ~.dot, .git, .hg, ~.nib, .pc, ~.plst, RCS, SCCS, _sgbak and .svn
Files not checked for type: /~$/ - Unix backup files /#.+#$/ - Emacs swap files /[._].*\.swp$/ - Vi(m) swap files /core\.\d+$/ - core dumps
Miscellaneous
--noenv Ignore environment variables and ~/.ackrc --help This help --man Man page --version Display version & copyright --thpppt Bill the Cat
Filetypes
The following is the list of filetypes supported by ack. You can specify a file type with the --type=TYPE format, or the --TYPE format. For example, both --type=perl and --perl work.
Note that some extensions may appear in multiple types. For example, .pod files are both Perl and Parrot.
--[no]actionscript .as .mxml --[no]asm .asm .s --[no]batch .bat .cmd --[no]binary Binary files, as defined by Perl's -B op (default: off) --[no]cc .c .h .xs --[no]cfmx .cfc .cfm .cfml --[no]cpp .cpp .cc .cxx .m .hpp .hh .h .hxx --[no]csharp .cs --[no]css .css --[no]elisp .el --[no]erlang .erl --[no]fortran .f .f77 .f90 .f95 .f03 .for .ftn .fpp --[no]haskell .hs .lhs --[no]hh .h --[no]html .htm .html .shtml .xhtml --[no]java .java .properties --[no]js .js --[no]jsp .jsp .jspx .jhtm .jhtml --[no]lisp .lisp .lsp --[no]lua .lua --[no]make Makefiles --[no]mason .mas .mhtml .mpl .mtxt --[no]objc .m .h --[no]objcpp .mm .h --[no]ocaml .ml .mli --[no]parrot .pir .pasm .pmc .ops .pod .pg .tg --[no]perl .pl .pm .pod .t --[no]php .php .phpt .php3 .php4 .php5 --[no]plone .pt .cpt .metadata .cpy .py --[no]python .py --[no]ruby .rb .rhtml .rjs .rxml .erb --[no]scheme .scm --[no]shell .sh .bash .csh .tcsh .ksh .zsh --[no]skipped Files, but not directories, normally skipped by ack (default: off) --[no]smalltalk .st --[no]sql .sql .ctl --[no]tcl .tcl .itcl .itk --[no]tex .tex .cls .sty --[no]text Text files, as defined by Perl's -T op (default: off) --[no]tt .tt .tt2 .ttml --[no]vb .bas .cls .frm .ctl .vb .resx --[no]vim .vim --[no]xml .xml .dtd .xslt .ent --[no]yaml .yaml .yml
