Slide 37
Slide 37 text
Options
-a, --all
Operate on all files, regardless of type (but still skip directories like blib, CVS , etc.)
-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 context around matching lines.
-c, --count
Suppress normal output; instead print a count of matching lines for each input file. If -l is in effect, it will only show the number of lines for each file that has lines matching. Without -l, some line counts may be zeroes.
If combined with -h (--no-filename) ack outputs only one total count.
--color, --nocolor
--color highlights the matching text. --nocolor supresses the color. This is on by default unless the output is redirected.
On Windows, this option is off by default unless the Win32::Console::ANSI module is installed or the "ACK_PAGER_COLOR" environment variable is used.
--color-filename=color
Sets the color to be used for filenames.
--color-match=color
Sets the color to be used for matches.
--color-lineno=color
Sets the color to be used for line numbers.
--column
Show the column number of the first match. This is helpful for editors that can place your cursor at a given position.
--env, --noenv
--noenv disables all environment processing. No .ackrc is read and all environment variables are ignored. By default, ack considers .ackrc and settings in the environment.
--flush
--flush flushes output immediately. This is off by default unless ack is running interactively (when output goes to a pipe or file).
-f
Only print the files that would be searched, without actually doing any searching. PATTERN must not be specified, or it will be taken as a path to search.
--follow, --nofollow
Follow or don't follow symlinks, other than whatever starting files or directories were specified on the command line.
This is off by default.
-G REGEX
Only paths matching REGEX are included in the search. The entire path and filename are matched against REGEX , and REGEX is a Perl regular expression, not a shell glob.
The options -i, -w, -v, and -Q do not apply to this REGEX .
-g REGEX
Print files where the relative path + filename matches REGEX . This option is a convenience shortcut for -f -G REGEX .
The options -i, -w, -v, and -Q do not apply to this REGEX .
--group, --nogroup
--group groups matches by file name with. This is the default when used interactively.
--nogroup prints one result per line, like grep. This is the default when output is redirected.
-H, --with-filename
Print the filename for each match.
-h, --no-filename
Suppress the prefixing of filenames on output when multiple files are searched.
--help
Print a short help statement.
-i, --ignore-case
Ignore case in the search strings.
This applies only to the PATTERN , not to the regexes given for the -g and -G options.
--[no]ignore-dir= DIRNAME
Ignore directory (as CVS , .svn, etc are ignored). May be used multiple times to ignore multiple directories. For example, mason users may wish to include --ignore-dir=data. The --noignore-dir option allows users to search directories which would normally be ignored (perhaps to research the contents of .svn/props directories).
The DIRNAME must always be a simple directory name. Nested directories like foo/bar are NOT supported. You would need to specify --ignore-dir=foo and then no files from any foo directory are taken into account by ack unless given explicitly on the command line.
--line= NUM
Only print line NUM of each file. Multiple lines can be given with multiple --line options or as a comma separated list (--line=3,5,7). --line=4-7 also works. The lines are always output in ascending order, no matter the order given on the command line.
-l, --files-with-matches
Only print the filenames of matching files, instead of the matching text.
-L, --files-without-matches
Only print the filenames of files that do NOT match. This is equivalent to specifying -l and -v.
--match REGEX
Specify the REGEX explicitly. This is helpful if you don't want to put the regex as your first argument, e.g. when executing multiple searches over the same set of files.
# search for foo and bar in given files
ack file1 t/file* --match foo
ack file1 t/file* --match bar
-m= NUM , --max-count= NUM
Stop reading a file after NUM matches.
--man
Print this manual page.
-n, --no-recurse
No descending into subdirectories.
-o
Show only the part of each line matching PATTERN (turns off text highlighting)
--output=expr
Output the evaluation of expr for each line (turns off text highlighting)
--pager=program
Direct ack's output through program. This can also be specified via the "ACK_PAGER" and "ACK_PAGER_COLOR" environment variables.
Using --pager does not suppress grouping and coloring like piping output on the command-line does.
--passthru
Prints all lines, whether or not they match the expression. Highlighting will still work, though, so it can be used to highlight matches while still seeing the entire file, as in:
# Watch a log file, and highlight a certain IP address
$ tail -f ~/access.log | ack --passthru 123.45.67.89
--print0
Only works in conjunction with -f, -g, -l or -c (filename output). The filenames are output separated with a null byte instead of the usual newline. This is helpful when dealing with filenames that contain whitespace, e.g.
# remove all files of type html
ack -f --html --print0 | xargs -0 rm -f
-Q, --literal
Quote all metacharacters in PATTERN , it is treated as a literal.
This applies only to the PATTERN , not to the regexes given for the -g and -G options.
-r, -R, --recurse
Recurse into sub-directories. This is the default and just here for compatibility with grep. You can also use it for turning --no-recurse off.
--smart-case, --no-smart-case
Ignore case in the search strings if PATTERN contains no uppercase characters. This is similar to "smartcase" in vim. This option is off by default.
-i always overrides this option.
This applies only to the PATTERN , not to the regexes given for the -g and -G options.
--sort-files
Sorts the found files lexically. Use this if you want your file listings to be deterministic between runs of ack.
--show-types
Outputs the filetypes that ack associates with each file.
Works with -f and -g options.
--thpppt
Display the all-important Bill The Cat logo. Note that the exact spelling of --thpppppt is not important. It's checked against a regular expression.
--type=TYPE, --type=noTYPE
Specify the types of files to include or exclude from a search. TYPE is a filetype, like perl or xml. --type=perl can also be specified as --perl, and --type=noperl can be done as --noperl.
If a file is of both type "foo" and "bar", specifying --foo and --nobar will exclude the file, because an exclusion takes precedence over an inclusion.
Type specifications can be repeated and are ORed together.
See ack --help=types for a list of valid types.
--type-add TYPE =.EXTENSION[,.EXT2[,...]]
Files with the given EXTENSION (s) are recognized as being of (the existing) type TYPE . See also "Defining your own types".
--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 . See also "Defining your own types".
-u, --unrestricted
All files and directories (including blib/, core.*, ...) are searched, nothing is skipped. When both -u and --ignore-dir are used, the --ignore-dir option has no effect.
-v, --invert-match
Invert match: select non-matching lines
This applies only to the PATTERN , not to the regexes given for the -g and -G options.
--version
Display version and copyright information.
-w, --word-regexp
Force PATTERN to match only whole words. The PATTERN is wrapped with "\b" metacharacters.
This applies only to the PATTERN , not to the regexes given for the -g and -G options.
-1
Stops after reporting first match of any kind. This is different from --max-count=1 or -m1, where only one match per file is shown. Also, -1 works with -f and -g, where -m does not.
Sure, I could have read through the man page and viewed all the options.