Адрес sed / RegEx /, ~ N

есть хорошая игра под названием Audiosurf. Его можно установить через Steam. How-to: Steam под Linux

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

3 ответа

/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
ответ дан 22 May 2018 в 15:51
  • 1
    Что вы имеете в виду с "кратным 8"? Это всего лишь строка 8, не так ли? – Smile 30 December 2017 в 12:15
  • 2
    @Smile Or line 16 или строка 24 и т. Д. Я просто добавил пример, чтобы показать его печать до строки 16. – John1024 30 December 2017 в 12:18
  • 3
    Хорошо. Благодарю. Я понял. – Smile 30 December 2017 в 12:18
  • 4
    @Smile Я копирую-и-вставку с терминала. Поэтому я набираю, скажем, seq 22 | sed -n '4~8 p' в терминал, нажимаю enter и копируем и вставляем результаты сюда. Как только я прихожу сюда, мне нужно отложить его на четыре пробела. Я делаю это, выделяя его и набрав Ctrl-K. – John1024 30 December 2017 в 12:25
  • 5
    спасибо, много работы. Я попробую в следующий раз. – Smile 30 December 2017 в 12:26

/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
ответ дан 18 July 2018 в 00:12

/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
ответ дан 24 July 2018 в 17:10

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

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