sift grep on steroids

A fast and powerful alternative to grep.

Download »

Why sift?

Most of the existing tools for searching through large amounts of text are either fast but inflexible (the original grep) or slightly more flexible but slow or complicated to install.

sift is an alternative that aims for both speed and flexibility - i.e. adding features while trying to reach (or even surpass) the performance of the original grep.
The additional features include gitignore support, conditions (e.g. match A only when preceded by B within X lines) , full multi-core support and multiline matching.


sift is not tailored towards a specific use case, but you can customize it to your needs through a global or local configuration file.

If you want sift to ignore case, show line numbers, skip binary files and understand .gitignore files by default, just execute
sift -i -n --binary-skip --git --write-config
and you are done.

Please see the features and samples to get a better impression of what you can do with sift.

Goals and Principles

The goals and design principles of sift are documented here to give a better idea of what to expect from sift.

    Search everywhere, unless specified otherwise: let the user decide what should not be searched. Do not favor a use case (code search/auditing, system administration, DFIR log search), but ensure sift can be configured to best match the requirements. Make it easy to customize sift through config files to change the default behavior system-wide or for a specific project path. Select performance-oriented alternatives by default. Strive for stability and correctness, especially when used as grep replacement. Do not hesitate to show errors/warnings. Optimize for future performance requirements, i.e. support and make use of multi-core systems. Be unobtrusive: only write to files if requested by the user, never execute other programs on the system.