skip/README.md
Paul Campbell fa6661b6a0
All checks were successful
Rust / build (map[name:nightly]) (push) Successful in 1m25s
Rust / build (map[name:stable]) (push) Successful in 1m33s
ci/woodpecker/push/woodpecker Pipeline was successful
docs(readme): remove unfullfilled promise
Sorry, I don't understand skip-list enough to repubilsh it.
2024-11-22 08:57:01 +00:00

143 lines
2.7 KiB
Markdown

# skip
Skip part of a file.
As `head` will show the top of a file up-to a number of line,
so `skip` will do the opposite, and not show the top of the file,
but will show the rest.
Additionally, it can check for whole lines matching,
or for a token being present on the line.
N.B.: The `skip` crate used to be an implementation of [Skip list](https://en.wikipedia.org/wiki/Skip_list),
by [Luo Jia / Zhouqi Jiang](https://github.com/luojia65) ([source](https://github.com/luojia65/skip)).
## Usage
### Skip a fixed number of lines
This example reads the file from stdin.
```bash
echo "line 1
line 2
line 3
line 4" > input.txt
skip 2 < input.txt
```
Will output:
```text
line 3
line 4
```
### Skip until a number of matching lines
The whole line must match.
This example reads the named file.
```bash
echo "alpha
beta
alpha
alpha
gamma
alpha" > input.txt
skip 2 --line alpha input.txt
```
Will output:
```text
alpha
gamma
alpha
```
### Skip lines until a number of tokens are seen
Looks for a string within a line, counting each occurance.
This example reads the file from stdin.
```bash
echo "Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.
Ut enim ad minim veniam,
quis nostrud exercitation ullamco
laboris nisi ut aliquip ex ea
commodo consequat." > input.txt
cat input.txt | skip 2 --token dolor
```
Will output:
```text
Ut enim ad minim veniam,
quis nostrud exercitation ullamco
laboris nisi ut aliquip ex ea
commodo consequat.
```
It matches the first `dolor` on line 1,
and the second on line 4 as part of the word `dolore`.
### Skip lines until a lines with tokens are seen
Looks for a string within a line, only counting each matching line once.
This example reads the file from stdin.
```bash
echo "Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.
Ut enim ad minim veniam,
quis nostrud exercitation ullamco
laboris nisi ut aliquip ex ea
commodo consequat." > input.txt
cat input.txt | skip 4 --token m --ignore-extras
```
Will output:
```text
quis nostrud exercitation ullamco
laboris nisi ut aliquip ex ea
commodo consequat.
```
Without `--ignore-extras`, it would have found the fourth `m` on line 3.
```bash
echo "Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.
Ut enim ad minim veniam,
quis nostrud exercitation ullamco
laboris nisi ut aliquip ex ea
commodo consequat." > input.txt
cat input.txt | skip 4 --token m
```
Outputing:
```text
ut labore et dolore magna aliqua.
Ut enim ad minim veniam,
quis nostrud exercitation ullamco
laboris nisi ut aliquip ex ea
commodo consequat.
```