Cabeçalho do índice de posts

Post arquivado

@augustocc@social.br-linux.org
avatar
@augustocc@social.br-linux.org
https://social.br-linux.org/@augustocc/113120524284339411
Em resposta a @augustocc/statuses/113120522894455836.

A utilidade prática do grep contribuiu para sua ampla disseminação. Por exemplo, eu lembro de ter usado uma versão 8 bits, para MSX, nos anos 1980, e usei muito as versões para DOS e Windows, na década seguinte.

O nome vem da sequência de teclas para acionar a mesma funcionalidade de pesquisa (Global / Regular Expression / Print) no venerável editor 'ed', lá nas origens do Unix.

Mas o grep não é muito posterior ao ed. Os dois são de 1973 (que também é o mesmo ano em que eu nasci).

2/

11/09/2024 16:16:58 ♥︎ 8 ↺ 0

Thread deste post

avatar
@augustocc@social.br-linux.org
https://social.br-linux.org/@augustocc/113120525520294730
Em resposta a @augustocc/statuses/113120524284339411.

A versão inicial do grep – que se chamava simplesmente s (de "search") – foi escrita pelo próprio Ken Thompson, um dos pais do Unix. Após ter sido modificada a pedido de um colega, e já com o nome de grep, a ferramenta foi incluído na versão 4 do Unix (1973).

Existe uma lenda de que o grep foi escrito em apenas uma noite, após o tal pedido, mas Thompson nega, e afirma que foi um mal entendido - ele já havia escrito o código antes, e não havia divulgado.

3/

11/09/2024 16:17:17 ♥︎ 8 ↺ 0
avatar
@augustocc@social.br-linux.org
https://social.br-linux.org/@augustocc/113120526488296110
Em resposta a @augustocc/statuses/113120525520294730.

Quem usa distribuições Linux provavelmente tem instalado o ágil GNU Grep, cuja versatilidade é grande a ponto de ter gerado um fato raro: levou a versão BSD do grep, tradicionalmente vista como rival, a adotar os parâmetros longos (como --ignore-case) que a versão do GNU popularizou.

Já o BSD Grep está presente nos próprios BSDs e em outros sistemas Unix não-GNU, como o sistema operacional do Mac, por exemplo. No meu Mac o grep default veio do FreeBSD, e eu instalei por cima o do GNU.

4/

11/09/2024 16:17:32 ♥︎ 9 ↺ 0
avatar
@augustocc@social.br-linux.org
https://social.br-linux.org/@augustocc/113120527445712026
Em resposta a @augustocc/statuses/113120526488296110.

Ambas as implementações do grep possuem algo em comum: também podem ser chamadas pelos comandos alternativos egrep e fgrep - para fazer buscas, respectivamente, por expressões regulares mais completas (extended, ou ERE), ou por strings fixas.

A sintaxe das ERE (do comando egrep) é aquela que é familiar a programadores deste século, onde caracteres como ?, +, |, () e {} têm significado especial por default. O comando grep "seco" interpreta uma sintaxe básica, chamada BRE.

5/

11/09/2024 16:17:46 ♥︎ 8 ↺ 0
avatar
@augustocc@social.br-linux.org
https://social.br-linux.org/@augustocc/113120528778695901
Em resposta a @augustocc/statuses/113120527445712026.

O egrep e o fgrep foram incluídos a partir da versão 7 do Unix (1979) - porém só o grep faz parte do padrão POSIX; a razão da existência dos outros 2 comandos é por conveniências de implementação, considerando as limitações dos computadores da época.

Hoje em dia, egrep, fgrep (e outras variantes como rgrep e bzgrep) são meros links para o mesmo executável do grep, e podem ser acionados também como parâmetros da linha de comando: "grep -E" e "grep -F", respectivamente.

6/

11/09/2024 16:18:07 ♥︎ 8 ↺ 0
avatar
@augustocc@social.br-linux.org
https://social.br-linux.org/@augustocc/113120530261773719
Em resposta a @augustocc/statuses/113120528778695901.

Porém faz tempo que as limitações dos anos 1970 não estão mais presentes. Desde 2007 o GNU grep marcou como obsoletos os comandos egrep ou fgrep. Mas muitos usuários (e seus scripts) continuaram a chamá-los.

Assim, a partir da versão 3.8 do GNU Grep (de 2022), o uso com os nomes de egrep e fgrep passou a gerar um aviso de obsolescência, lembrando que que podem ser substituídos pelo grep com parâmetros.

O manual até mostra um script de uma linha para manter o nome original, no futuro.

7/

11/09/2024 16:18:29 ♥︎ 7 ↺ 0
avatar
@augustocc@social.br-linux.org
https://social.br-linux.org/@augustocc/113120531397224474
Em resposta a @augustocc/statuses/113120530261773719.

Para mim, a sintaxe completa (ou ERE) das expressões regulares é a mais natural, e sou leitor de manual, então sabia do caso e há anos passei a usar "grep -E" nos meus scripts.

Sugiro que você faça o mesmo, e evite assim uma incompatibilidade quando eles resolverem arrancar o de vez o band-aid...

8/

11/09/2024 16:18:47 ♥︎ 8 ↺ 0
avatar
@augustocc@social.br-linux.org
https://social.br-linux.org/@augustocc/113120532447456329
Em resposta a @augustocc/statuses/113120531397224474.

O grep é um utilitário maduro, mas sempre há espaço para evolução, e a já mencionada versão GNU 3.8 trouxe algumas novidades: vários casos novos de sintaxe ambígua passaram a ser tratados e, para quem usa expressões regulares do Perl, o suporte evoluiu da implementação PCRE para a PCRE2.

As versões do grep lançadas desde então (2022 em diante) tiveram foco também em corrigir ou complementar o suporte às expressões regulares estilo Perl.

9/

11/09/2024 16:19:03 ♥︎ 7 ↺ 0
avatar
@augustocc@social.br-linux.org
https://social.br-linux.org/@augustocc/113120534176611728
Em resposta a @augustocc/statuses/113120532447456329.

Se você quer explorar as possibilidades do grep e da fauna de utilitários e bibliotecas que tiram proveito da mesma tecnologia, recomendo muito a 5ª edição do livro Expressões Regulares, do Aurélio Marinho Jargas/Novatec.

E se quiser ir além das funcionalidades históricas do grep, pode explorar alguns dos seus sucessores, como o ripgrep, rak, The Silver Searcher e The Platinum Searcher; estes últimos também são conhecidos como ag e pt, dos respectivos elementos na tabela periódica.

10/10

11/09/2024 16:19:29 ♥︎ 9 ↺ 0
Posts