sed / RegEx /, ~ N endereço de formato

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

Eu sei o que isso faz. Mas, eles dizem "um múltiplo de 8" para ~ 8. Por que é expresso como "um múltiplo de 8"?

    
por Smile 30.12.2017 / 09:01

1 resposta

5

/b/,~8 corresponde a linhas que começam com uma linha contendo b e continuam até que uma linha seja alcançada, cujo número de linha é um múltiplo de 8

De man sed :

  

addr1,~N
   Corresponde a addr1 e as linhas que seguem addr1 até a próxima linha cujo número de linha de entrada é um múltiplo de N .

Exemplos

Imprime qualquer linha que contenha 5 e todas as linhas seguintes até e incluindo a próxima linha cujo número de linha seja um múltiplo de 8:

$ seq 14 | sed -n '/5/,~8 p'
5
6
7
8

Imprime a partir de uma linha contendo 14 até a próxima linha cujo número de linha é um múltiplo de 8:

$ seq 22 | sed -n '/14/,~8 p'
14
15
16

Isso exclui todas as linhas que começam com uma linha corresponde a 5 e termina com a próxima linha cujo número de linha é um múltiplo de 8:

$ seq 10 | sed '/5/,~8 d'
1
2
3
4
9
10

Semelhante, mas diferente

Isso imprime a quarta linha e todas as linhas seguintes:

$ seq 22 | sed -n '4~8 p'
4
12
20

Isso imprime uma linha correspondente a 4 e as próximas três linhas a seguir:

$ seq 13 | sed -n '/4/,+3 p'
4
5
6
7
    
por John1024 30.12.2017 / 09:09

Tags