/oss · 3 merged

uutils/grep

A rewrite of the grep search tool in Rust, aiming to work the same as GNU grep.

the project on GitHub (opens in a new tab)
  1. 9 Nov 2026

    A stray closing bracket in a search pattern is now plain text

    What was broken
    GNU grep treats a closing round bracket with no opening one as an ordinary character. This grep rejected the pattern with an error and stopped.
    What I changed
    Extended patterns now accept it as a literal character, while basic patterns keep their existing rules.
    Why it matters
    Scripts that search with these patterns work the same as with GNU grep.

    see the code, #150 (opens in a new tab)

  2. 9 Nov 2026

    Line numbers and byte offsets now line up like GNU grep

    What was broken
    With the option that lines up output with a tab, a file read from standard input got far too much padding, and byte offsets got none at all.
    What I changed
    The padding now follows the size of the input and also covers byte offsets, matching GNU grep.
    Why it matters
    Output has the same columns as GNU grep, so scripts that read it keep working.

    see the code, #149 (opens in a new tab)

  3. 24 Oct 2026

    The last matching include or exclude rule now decides

    What was broken
    When a search mixed rules for which files to include and which to skip, any skip rule won, whatever the order. GNU grep lets the last rule that matches a file decide, so the two picked different files.
    What I changed
    The rules are now kept in the order you typed them, and the last one that matches a file decides, like GNU grep.
    Why it matters
    Searches over a folder look at the same files as GNU grep.

    see the code, #146 (opens in a new tab)

← every project