Difference between revisions of "Ack"
(→Usage) |
|||
Line 12: | Line 12: | ||
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 "-". | 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. | + | Default switches may be specified in ACK_OPTIONS environment variable or an <code>.ackrc</code> file. If you want no dependency on the environment, turn it off with --noenv. |
Example: | Example: | ||
Line 24: | Line 24: | ||
===Search output=== | ===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=== | ===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=== | ===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=== | ===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=== | ===Miscellaneous=== | ||
− | + | --noenv Ignore environment variables and ~/.ackrc | |
− | + | --help This help | |
− | + | --man Man page | |
− | + | --version Display version & copyright | |
− | + | --thpppt Bill the Cat | |
===Filetypes=== | ===Filetypes=== | ||
Line 118: | Line 116: | ||
Note that some extensions may appear in multiple types. For example, .pod files are both Perl and Parrot. | Note that some extensions may appear in multiple types. For example, .pod files are both Perl and Parrot. | ||
− | + | --[no]actionscript .as .mxml | |
− | + | --[no]ada .ada .adb .ads | |
− | + | --[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]clojure .clj | |
− | + | --[no]cpp .cpp .cc .cxx .m .hpp .hh .h .hxx | |
− | + | --[no]csharp .cs | |
− | + | --[no]css .css | |
− | + | --[no]delphi .pas .int .dfm .nfm .dof .dpk .dproj .groupproj .bdsgroup .bdsproj | |
− | + | --[no]elisp .el | |
− | + | --[no]erlang .erl .hrl | |
− | + | --[no]fortran .f .f77 .f90 .f95 .f03 .for .ftn .fpp | |
− | + | --[no]go .go | |
− | + | --[no]groovy .groovy .gtmpl .gpp .grunit | |
− | + | --[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 (including *.mk and *.mak) | |
− | + | --[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 .phtml | |
− | + | --[no]plone .pt .cpt .metadata .cpy .py | |
− | + | --[no]python .py | |
− | + | --[no]rake Rakefiles | |
− | + | --[no]ruby .rb .rhtml .rjs .rxml .erb .rake .spec | |
− | + | --[no]scala .scala | |
− | + | --[no]scheme .scm .ss | |
− | + | --[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]verilog .v .vh .sv | ||
+ | --[no]vhdl .vhd .vhdl | ||
+ | --[no]vim .vim | ||
+ | --[no]xml .xml .dtd .xsl .xslt .ent | ||
+ | --[no]yaml .yaml .yml | ||
==External links== | ==External links== | ||
− | *[http:// | + | *[http://betterthangrep.com/ official website] |
*[http://blog.i-no.de/archives/2008/05/06/index.html ack examples] | *[http://blog.i-no.de/archives/2008/05/06/index.html ack examples] | ||
+ | *[http://stevengharms.com/blog/2012/04/10/use-ack-instead-of-grep-to-parse-text-files/ Use Ack Instead of Grep to Parse Text Files] — by Steven Harms | ||
[[Category:Linux Command Line Tools]] | [[Category:Linux Command Line Tools]] |
Latest revision as of 00:03, 16 December 2012
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]ada .ada .adb .ads --[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]clojure .clj --[no]cpp .cpp .cc .cxx .m .hpp .hh .h .hxx --[no]csharp .cs --[no]css .css --[no]delphi .pas .int .dfm .nfm .dof .dpk .dproj .groupproj .bdsgroup .bdsproj --[no]elisp .el --[no]erlang .erl .hrl --[no]fortran .f .f77 .f90 .f95 .f03 .for .ftn .fpp --[no]go .go --[no]groovy .groovy .gtmpl .gpp .grunit --[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 (including *.mk and *.mak) --[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 .phtml --[no]plone .pt .cpt .metadata .cpy .py --[no]python .py --[no]rake Rakefiles --[no]ruby .rb .rhtml .rjs .rxml .erb .rake .spec --[no]scala .scala --[no]scheme .scm .ss --[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]verilog .v .vh .sv --[no]vhdl .vhd .vhdl --[no]vim .vim --[no]xml .xml .dtd .xsl .xslt .ent --[no]yaml .yaml .yml
External links
- official website
- ack examples
- Use Ack Instead of Grep to Parse Text Files — by Steven Harms