sed /RegEx/,~N 格式地址

sed /RegEx/,~N 格式地址
$ sed '/b/,~8 d' a-i.txt

我知道它的作用。但是,他们说 ~8 是“8 的倍数”。为什么它表示为“8 的倍数”?

答案1

/b/,~8匹配以包含以下内容的行开头的行b,直到行号为 8 的倍数的行

man sed

addr1,~N
将匹配addr1及其后的行,addr1直到下一行,其输入行号是 的倍数N

例子

这将打印包含以下所有行的任何行5,直到下一行(其行号是 8 的倍数):

$ seq 14 | sed -n '/5/,~8 p'
5
6
7
8

这将打印从包含 14 的行到下一行(其行号是 8 的倍数):

$ seq 22 | sed -n '/14/,~8 p'
14
15
16

这将删除以行匹配开头5并以下一行(其行号是 8 的倍数)结尾的所有行:

$ seq 10 | sed '/5/,~8 d'
1
2
3
4
9
10

相似但不同

这将打印第四行以及其后的每八行:

$ seq 22 | sed -n '4~8 p'
4
12
20

这将打印匹配的行4以及随后的三行:

$ seq 13 | sed -n '/4/,+3 p'
4
5
6
7

相关内容