grep

package
v0.0.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 20, 2026 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Overview

Package grep implements the grep builtin command.

grep — print lines that match patterns

Usage: grep [OPTION]... PATTERN [FILE]...

grep [OPTION]... -e PATTERN [-e PATTERN]... [FILE]...

Search for PATTERN in each FILE. When FILE is -, read standard input. With no FILE, read standard input.

Accepted flags:

-E, --extended-regexp
    Interpret PATTERN as an extended regular expression (ERE).

-F, --fixed-strings
    Interpret PATTERN as a list of fixed strings (not regexps),
    separated by newlines, any of which is to be matched.

-G, --basic-regexp
    Interpret PATTERN as a basic regular expression (BRE). This is
    the default.

-i, --ignore-case
    Ignore case distinctions in patterns and input data.

-v, --invert-match
    Invert the sense of matching, to select non-matching lines.

-c, --count
    Suppress normal output; instead print a count of matching lines
    for each input file.

-l, --files-with-matches
    Suppress normal output; instead print the name of each input
    file from which output would normally have been printed.

-L, --files-without-match
    Suppress normal output; instead print the name of each input
    file from which no output would normally have been printed.

-n, --line-number
    Prefix each line of output with the 1-based line number within
    its input file.

-H, --with-filename
    Print the file name for each match. This is the default when
    there is more than one file to search.

-h, --no-filename
    Suppress the prefixing of file names on output.

-o, --only-matching
    Print only the matched (non-empty) parts of a matching line,
    with each such part on a separate output line.

-q, --quiet, --silent
    Quiet. Do not write anything to standard output. Exit with zero
    status if any match is found, even if an error was detected.

-s, --no-messages
    Suppress error messages about nonexistent or unreadable files.

-x, --line-regexp
    Select only those matches that exactly match the whole line.

-w, --word-regexp
    Select only those lines containing matches that form whole
    words.

-e PATTERN, --regexp=PATTERN
    Use PATTERN as the pattern. If this option is used multiple
    times, search for all patterns given.

-a, --text
    Process a binary file as if it were text; all lines (including
    those containing NUL bytes) are treated as text and may match.

-m NUM, --max-count=NUM
    Stop reading a file after NUM matching lines.

-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 of output context. Equivalent to -A NUM -B NUM.

Exit codes:

0  At least one match was found.
1  No matches were found.
2  An error occurred.

Memory safety:

All processing is streaming: input is read line-by-line with a per-line
cap of MaxLineBytes (1 MiB). Lines exceeding this cap cause an error
rather than an unbounded allocation. All read loops check ctx.Err() at
each iteration to honour the shell's execution timeout and support
graceful cancellation. Go's regexp package uses the RE2 engine which
guarantees linear-time matching, preventing ReDoS attacks.

Index

Constants

View Source
const MaxContextLines = 1_000 // 1k lines

MaxContextLines caps -A/-B/-C to prevent excessive memory use.

View Source
const MaxLineBytes = 1 << 20 // 1 MiB

MaxLineBytes is the per-line buffer cap for the line scanner. Lines longer than this are reported as an error instead of being buffered.

Variables

View Source
var Cmd = builtins.Command{
	Name:        "grep",
	Description: "print lines that match patterns",
	MakeFlags:   registerFlags,
}

Cmd is the grep builtin command descriptor.

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL