$ sed '/b/,~8 d' a-i.txt
Run Code Online (Sandbox Code Playgroud)
我知道它的作用。但是,他们说 ~8 的“8 的倍数”。为什么表示为“8的倍数”?
/b/,~8匹配以包含b并继续到行号为 8 的倍数的行开始的行
来自man sed:
addr1,~N
将匹配addr1和后面addr1的行,直到下一行的输入行号是 的倍数N。
这将打印包含5行号为 8 的倍数的下一行的所有行以及所有后续行(包括下一行):
$ seq 14 | sed -n '/5/,~8 p'
5
6
7
8
Run Code Online (Sandbox Code Playgroud)
这将从包含 14 的行打印到行号为 8 的倍数的下一行:
$ seq 22 | sed -n '/14/,~8 p'
14
15
16
Run Code Online (Sandbox Code Playgroud)
这将删除以匹配行开始5并以行号为 8 的倍数的下一行结束的所有行:
$ seq 10 | sed '/5/,~8 d'
1
2
3
4
9
10
Run Code Online (Sandbox Code Playgroud)
这将打印第四行和此后的每一行:
$ seq 22 | sed -n '4~8 p'
4
12
20
Run Code Online (Sandbox Code Playgroud)
这将打印一行匹配4以及接下来的三行:
$ seq 13 | sed -n '/4/,+3 p'
4
5
6
7
Run Code Online (Sandbox Code Playgroud)