Editor de fluxo - intervalo de padrões
No capítulo anterior, aprendemos como o SED lida com uma faixa de endereços. Este capítulo cobre como o SED cuida de uma faixa de padrões. Um intervalo de padrões pode ser um texto simples ou uma expressão regular complexa. Vamos dar um exemplo. O exemplo a seguir imprime todos os livros do autor Paulo Coelho.
[jerry]$ sed -n '/Paulo/ p' books.txt
Ao executar o código acima, você obtém o seguinte resultado:
3) The Alchemist, Paulo Coelho, 197
5) The Pilgrimage, Paulo Coelho, 288
No exemplo acima, o SED opera em cada linha e imprime apenas as linhas que correspondem à string Paulo.
Também podemos combinar um intervalo de padrões com um intervalo de endereços. O exemplo a seguir imprime linhas começando com a primeira correspondência de Alchemist até a quinta linha.
[jerry]$ sed -n '/Alchemist/, 5 p' books.txt
Ao executar o código acima, você obtém o seguinte resultado:
3) The Alchemist, Paulo Coelho, 197
4) The Fellowship of the Ring, J. R. R. Tolkien, 432
5) The Pilgrimage, Paulo Coelho, 288
Podemos usar o caractere Dollar ($) para imprimir todas as linhas depois de encontrar a primeira ocorrência do padrão. O exemplo a seguir encontra a primeira ocorrência do padrão e imediatamente imprime as linhas restantes do arquivo
[jerry]$ sed -n '/The/,$ p' books.txt
Ao executar o código acima, você obtém o seguinte resultado:
2) The Two Towers, J. R. R. Tolkien, 352
3) The Alchemist, Paulo Coelho, 197
4) The Fellowship of the Ring, J. R. R. Tolkien, 432
5) The Pilgrimage, Paulo Coelho, 288
6) A Game of Thrones, George R. R. Martin, 864
Também podemos especificar mais de um intervalo de padrão usando o operador vírgula (,). O exemplo a seguir imprime todas as linhas que existem entre os padrões Dois e Peregrinação.
[jerry]$ sed -n '/Two/, /Pilgrimage/ p' books.txt
Ao executar o código acima, você obtém o seguinte resultado:
2) The Two Towers, J. R. R. Tolkien, 352
3) The Alchemist, Paulo Coelho, 197
4) The Fellowship of the Ring, J. R. R. Tolkien, 432
5) The Pilgrimage, Paulo Coelho, 288
Além disso, podemos usar o operador mais (+) dentro de um intervalo de padrão. O exemplo a seguir encontra a primeira ocorrência do padrão Dois e imprime as próximas 4 linhas depois disso.
[jerry]$ sed -n '/Two/, +4 p' books.txt
Ao executar o código acima, você obtém o seguinte resultado:
2) The Two Towers, J. R. R. Tolkien, 352
3) The Alchemist, Paulo Coelho, 197
4) The Fellowship of the Ring, J. R. R. Tolkien, 432
5) The Pilgrimage, Paulo Coelho, 288
6) A Game of Thrones, George R. R. Martin, 864
Fornecemos aqui apenas alguns exemplos para que você se familiarize com o SED. Você sempre pode saber mais tentando alguns exemplos por conta própria.