$ sed '/b/,~8 d' a-i.txt
Я знаю, что он делает. Но они говорят, что «кратно 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
Это печатает от строки, содержащей 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