Interactive grep (for streaming)
sig
Interactive grep
|
|
| |---|---|
Features
- Interactive grep (for streaming)
- Re-execute command
--cmd is specified instread of piping data to sig,
the command will be executed on initial and retries.
- This feature is designed to address the issue where data streams
past while the user is fine-tuning the search criteria.
In other words, even if the data has already passed,
executing the command again allows
the retrieval of the data for re-evaluation.
- Archived mode
-Q option.
Installation
Homebrew
brew install ynqa/tap/sigrs
Cargo
cargo install sigrs
X-CMD
If you're an x-cmd user, you can install it with the following command:
x install sig
Arch Linux
pacman -S sig
Nix (flakes)
Add it as an input to your flake:
inputs = { sig.url = 'github:ynqa/sig/<optional-ref>' }
Create a shell with it:
nix shell github:ynqa/sig
Or run it directly:
cat README.md | nix run github:ynqa/sig
Nix (classic)
Fetch the source and use it, e.g. in your shell:
let
# At the time of writing this, pkgs need to be unstable for the package to build properly
# (requires Rust 1.74, stable has 1.73)
pkgs = import <nixpkgs-unstable> {};
sig = pkgs.callPackage (pkgs.fetchFromGitHub { owner = "ynqa"; repo = "sig"; rev = "<revision, e.g. master/v0.1.0/etc.>"; hash = ""; # Build first, put proper hash in place }) {}; in pkgs.mkShell { packages = [sig]; }
Examples
stern --context kind-kind etcd |& sig
or
sig --cmd "stern --context kind-kind etcd" # this is able to retry command by ctrl+r.
or static input (switches to archived view after EOF)
cat README.md |& sig
Keymap
| Key | Action | :- | :- | Ctrl + C | Exit sig | Ctrl + R | Retry command if --cmd is specified | Ctrl + S | Pause/Resume stream ingestion | Ctrl + F | Enter Archived mode | โ | Move the cursor one character to the left | โ | Move the cursor one character to the right | Ctrl + A | Move the cursor to the start of the filter | Ctrl + E | Move the cursor to the end of the filter | Backspace | Delete a character of filter at the cursor position | Ctrl + U | Delete all characters of filter
(Archived mode)
| Key | Action | :- | :- | Ctrl + C | Exit Archived mode | โ | Move the cursor one character to the left | โ | Move the cursor one character to the right | Ctrl + A | Move the cursor to the start of the filter | Ctrl + E | Move the cursor to the end of the filter | Backspace | Delete a character of filter at the cursor position | Ctrl + U | Delete all characters of filter
Usage
Interactive grep (for streaming)
Usage: sig [OPTIONS]
Examples:
$ stern --context kind-kind etcd |& sig Or the method to retry command by pressing ctrl+r: $ sig --cmd "stern --context kind-kind etcd"
Static input (switches to archived view after EOF): $ cat README.md |& sig
Options: --retrieval-timeout <RETRIEVALTIMEOUTMILLIS> Timeout to read a next line from the stream in milliseconds. [default: 10] --render-interval <RENDERINTERVALMILLIS> Interval to render a line in milliseconds. -q, --queue-capacity <QUEUE_CAPACITY> Queue capacity to store lines. [default: 1000] -i, --ignore-case Case insensitive search. --cmd <CMD> Command to execute on initial and retries. -Q, --query <QUERY> Initial query. -c, --config <CONFIG_FILE> Path to the configuration file. -h, --help Print help (see more with '--help') -V, --version Print version
Configuration
The following settings are available in config.toml
# Style for matched substrings
highlight_style = "fg=red"
[streaming.editor]
Query prompt while streaming
prefix = "โฏโฏ " prefix_style = "fg=darkgreen" activecharstyle = "bg=darkcyan" inactivecharstyle = "" lines =
[streaming.keybinds] exit = ["Ctrl+C"] goto_archived = ["Ctrl+F"] retry = ["Ctrl+R"] toggle_pause = ["Ctrl+S"]
[streaming.keybinds.editor] backward = ["Left"] forward = ["Right"] movetohead = ["Ctrl+A"] movetotail = ["Ctrl+E"] erase = ["Backspace"] erase_all = ["Ctrl+U"]
[archived.editor]
Query prompt in archived mode
prefix = "โฏโฏโฏ " prefix_style = "fg=darkblue" activecharstyle = "bg=darkcyan" inactivecharstyle = "" lines =
[archived.listbox] cursor = "โฏ "
activeitemstyle =
inactiveitemstyle =
lines =
[archived.keybinds] exit = ["Ctrl+C"] retry = ["Ctrl+R"] up = ["Up", "ScrollUp"] down = ["Down", "ScrollDown"]
[archived.keybinds.editor] backward = ["Left"] forward = ["Right"] movetohead = ["Ctrl+A"] movetotail = ["Ctrl+E"] erase = ["Backspace"] erase_all = ["Ctrl+U"]