sed / RegEx /, ~ N формат адреса

$ sed '/b/,~8 d' a-i.txt

Я знаю, что он делает. Но они говорят, что «кратно 8» для ~ 8. Почему оно выражается как «кратное 8»?

3
задан 30 December 2017 в 11:04

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
5
ответ дан 30 December 2017 в 11:04

Другие вопросы по тегам:

Похожие вопросы: