| Crates.io | suln |
| lib.rs | suln |
| version | 0.1.2 |
| created_at | 2022-10-02 15:37:20.572538+00 |
| updated_at | 2022-10-02 16:51:33.631853+00 |
| description | `suln` is a CLI that prints surroundings of line number with `grep`. |
| homepage | https://github.com/jiro4989/suln |
| repository | https://github.com/jiro4989/suln |
| max_upload_size | |
| id | 678386 |
| size | 87,315 |
suln is a CLI that prints surroundings of line number with grep.

Basic usage is:
grep -nH '<pattern>' '<file>' | suln <-B NUM | -A NUM | -C NUM>
suln use file name and line number with grep.
And suln provides you with continuation of grep .
For example, simply grep to search with file name and line number.
$ grep -Hn Usage README.adoc
README.adoc:7:== Usage
And, add suln -A (--after-context).
suln outputs the continuation of an interrupted search result.
$ grep -Hn Usage README.adoc | suln -A 2
README.adoc:7:== Usage
README.adoc:8:
README.adoc:9:Basic usage is:
Use -B (--before-context) if you want to search before text.
$ grep -Hn Usage README.adoc | suln -B 2
README.adoc:5:`suln` is a CLI that prints surroundings of line number with `grep`.
README.adoc:6:
README.adoc:7:== Usage
Use -C (--context) if you want to search before or after text.
$ grep -Hn Usage README.adoc | suln -C 2
README.adoc:5:`suln` is a CLI that prints surroundings of line number with `grep`.
README.adoc:6:
README.adoc:7:== Usage
README.adoc:8:
README.adoc:9:Basic usage is:
These options are same grep.
$ grep --help | grep -Eo '(-[ABC].+=NUM)'
-B, --before-context=NUM
-A, --after-context=NUM
-C, --context=NUM
Here is an example of AND search for multiple keys in JSON.
Searches for id where name is bob and age is 18.
This is not possible with grep alone.
$ grep -C 2 bob testdata/example.json
{
"id": 31,
"name": "bob",
"age": 18
},
--
{
"id": 334,
"name": "bob",
"age": 4
},
Because, id is disappear when search with age.
$ grep -HnC 2 bob testdata/example.json | grep 'age.*18'
"age": 18
You must use many commands if you want to get id.
$ grep -C 2 bob testdata/example.json | grep -Ev '^--$' | paste - - - - - | grep 'bob.*age.*18' | grep -Eo '"id[^,]+' '"' | awk '{print $2}'
31
Or, you must write complexity jq query.
⟩ jq -r '.[] | select(.name == "bob" and .age == 18) | .id' testdata/example.json
31
suln is useful if you would like to search more intuitive.
$ grep -HnC 2 bob testdata/example.json | grep 'age.*18'
testdata/example.json-15- "age": 18
$ grep -HnC 2 bob testdata/example.json | grep 'age.*18' | suln -B 2
testdata/example.json:13: "id": 31,
testdata/example.json:14: "name": "bob",
testdata/example.json:15: "age": 18
⟩ grep -HnC 2 bob testdata/example.json | grep 'age.*18' | suln -B 2 | grep 'id.*31'
testdata/example.json:13: "id": 31,
$ cargo install suln
Or, you can download and install from GitHub Releases.
MIT
cargo build
cargo test