Sed: руководство: различия между версиями
Содержимое удалено Содержимое добавлено
Строка 1079:
=== Продвинутые средства адресации в GNU Sed ===
В реализации GNU Sed есть несколько более продвинутых методов адресации строк, нежели у других клонов.
:<code><строка>~<шаг></code>
::Позволяет захватывать строки в потоке с некоторым шагом. Этим выражением мы говорим «брать каждую <code><шаг></code> строку, начиная со строки <code><строка></code>». Так, выражение <code>1~2</code> просит брать нечетные строки (брать через 2, начиная с первой), а <code>2~2</code> — брать четные строки.
:<code><адрес>,+N</code>
::Позволяет захватить строку, адресованную через <code><адрес></code> и еще <code>N</code> строк после нее.
:<code><адрес>,~N</code>
::Позволяет захватить строку, адресованную через <code><адрес></code> и еще несколько строк после нее до строки, кратной <code>N</code>.
Примеры
<source lang="bash">
# Нечетные строки
$ seq 8 | sed -n '1~2p'
1
3
5
7
# Каждая вторая, начиная с третьей
$ seq 8 | sed -n '3~2p'
3
5
7
# Первая и еще три после нее
$ seq 8 | sed -n '1,+3p'
1
2
3
4
# Строка с цифрой 5 и еще три после нее
$ seq 8 | sed -n '/5/,+3p'
5
6
7
8
# С первой и до строки, чей номер кратен 3
$ seq 8 | sed -n '1,~3p'
1
2
3
</source>
=== Переходы в микропрограмме в GNU Sed ===
|