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 ===