Pesquisa reversa em REGEX

regex_reverso-1_abertura

Dica rápida com expressões regulares. Quando você precisa buscar uma determinada palavra dentro de uma sequência¹ você faz algo mais ou menos assim…

$ lspci | egrep "^00:1[0-9]\.[0-9]"
00:14.0 USB controller: Intel Corporation Sunrise Point-LP USB 3.0...
00:14.2 Signal processing controller: Intel Corporation Sunrise Po...
00:15.0 Signal processing controller: Intel Corporation Sunrise Po...
00:16.0 Communication controller: Intel Corporation Sunrise Point-...
00:17.0 SATA controller: Intel Corporation Sunrise Point-LP SATA C...

Mas e se você deseja justamente fazer o contrário? No caso específico do comando grep basta simplesmente utilizar o parâmetro ou “– – invert-match“|”-v” para tal…

$ lspci | egrep --invert-match "^00:1[0-9]\.[0-9]"
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v6/7th Gen Cor...
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 6...
00:1c.0 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express...
00:1c.5 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express...
00:1f.0 ISA bridge: Intel Corporation Device 9d4e (rev 21)
00:1f.2 Memory controller: Intel Corporation Sunrise Point-LP PMC... 
00:1f.3 Audio device: Intel Corporation Sunrise Point-LP HD Audio... 
00:1f.4 SMBus: Intel Corporation Sunrise Point-LP SMBus (rev 21)
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL81...
02:00.0 Network controller: Qualcomm Atheros QCA9377 802.11ac Wire...

Mas e se o que você precisa, não pode ser feito através do grep?

(¹) Uma pesquisa simples, tudo que comece com “00:1”, tenha qualquer dígito entre  0 e 9, um ponto (“.”) e outro dígito entre 0 e 9.

Continuar lendo

Anúncios

Colorindo o terminal

rainbownize_tela

A maioria das pessoas não se dá conta mas alguns emuladores de terminal em X suportam a exibição de caracteres usando um esquema de cores de 24-bit — o tal do True Color. Existe até existe uma “ferramenta” chamada lolcat que usa este recurso para exibir o conteúdo de um arquivo em belos padrões de arco íris!

Algo tão “útil” que eu resolvi fazer minha própria implementação. 🙂

Continuar lendo

Um pouco mais de Ruby

Lembram da orientação a objetos em Perl? Lembram do método AUTOLOAD e de eu ter comentado sobre ser específico desta linguagem? Pois é, não é assim tão específico quanto a documentação me fez acreditar. Assim como acontece com o unless, o Ruby também tem algo parecido. Chama-se method_missing e funciona mais ou menos assim:

Claro que é possível fazer a linguagem construir dinamicamente o método ausente utilizando define_method mas daí já é enveredar muito nos caminhos da meta programação.