Skip to main content

A text-based application running in terminals to search into text files

Project description

searchf

Latest Version

Utility program to interactively search keywords in text files. Works in terminals thanks to curses.

Peek 2022-12-26 19-53

Installation

sudo apt install pipx
pipx install searchf

pip install searchf

Requirements:

  • Python 3.10 or greater
  • Terminal with color support (ie. TERM=screen-256color or TERM=xterm-256color).

Features

  • Filters can either include or exclude file content
  • Filters can persist to disk
  • Multiple highlight and colorization modes (press h to cycle through all modes)
  • Color palettes (press c to cycle through all palettes)
  • Various other display modes (l toggles line numbers visibility, k toggles line wrapping, ...)
  • Multiple views (press 1, 2, 3 to switch) with possibility to pass filters of one view to another view (try !, @, #)
  • Common search key bindings (/, then n for next, p for previous)
  • Common key bindings to scroll up/down pages or goto line
  • Terminal resizing

Usage

searchf <FILE>

  • Press f to enter keyword in a new filter
  • Press ? for help

Press ENTER to define the first keyword of a filter and reveal only the lines containing that keyword. Press + to add another keyword to the current filter in order to further narrow down the lines currently displayed.

A filter is a list of keywords that a line must contain to match and get highlighted in a specific color. By defining multiple filters, you can reveal more content of the file. By default, lines not matching any filter are hidden, but you can progressively reveal context surrounding matching lines by pressing m multiple times, all the way to the whole content of the file. Filters can also be used to filter out content you do not want to see (press x to toggle this mode).

Screenshot searchf help

Why?

This tool is born from my need to interactively search into log files, with the ability to backtrack when hitting dead ends (hence the use of push/pop of filter and keyword), and to go down some exploratory paths on the side (hence the support of views). I use it most when I'm not fully aware of what I am searching for...

To be more specific, I often have to dig into build log files, which are a raw aggregate of many heterogenous sources (numerous compiler output, deployment scripts, test run and results, ...) resulting in rather unstructured output. The only commonality being that everything is more or less line-oriented. When a build failure occurs, searchf helps me find hints of the root cause which can be hiding about anywhere.

So this tool ends up making little or no assumption on the input file, which can be anything, unstructured and heterogenous, as long as it is line oriented.

Development

Please refer to DEV.md for further information.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

searchf-1.21.tar.gz (45.8 kB view details)

Uploaded Source

Built Distribution

searchf-1.21-py3-none-any.whl (51.8 kB view details)

Uploaded Python 3

File details

Details for the file searchf-1.21.tar.gz.

File metadata

  • Download URL: searchf-1.21.tar.gz
  • Upload date:
  • Size: 45.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.19

File hashes

Hashes for searchf-1.21.tar.gz
Algorithm Hash digest
SHA256 da84acc29d69a5009dd4ceb2b50f5046f6c98b33a51dc6b7e658c72cdc140bd7
MD5 522e676987ae2e93829637896abd4d6d
BLAKE2b-256 c94f56ff34422842885179e0f7f6deeb8e67444a7b36ce18ea4cac909c785efe

See more details on using hashes here.

File details

Details for the file searchf-1.21-py3-none-any.whl.

File metadata

  • Download URL: searchf-1.21-py3-none-any.whl
  • Upload date:
  • Size: 51.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.19

File hashes

Hashes for searchf-1.21-py3-none-any.whl
Algorithm Hash digest
SHA256 d94c0aa92809d5787b48f64303bc6340df57daffab9a8644e64ec8675531b8c8
MD5 6b2be7cb3f11babdbb9ac33019f4b1bc
BLAKE2b-256 09e4e509caa59649d1a3dae01453a00a9be8a140b3d105c0a35f989ba22b1b56

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page