2023-03-23 16:12:03 +00:00
|
|
|
# skip
|
|
|
|
|
|
|
|
Skip part of a file.
|
|
|
|
|
2024-02-28 17:48:25 +00:00
|
|
|
As `head` will show the top of a file up-to a number of line,
|
2023-03-23 16:12:03 +00:00
|
|
|
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.
|
|
|
|
|
2024-02-28 17:48:25 +00:00
|
|
|
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)).
|
|
|
|
|
2023-03-23 16:12:03 +00:00
|
|
|
## 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.
|
|
|
|
```
|