SED e regex
Vi um artigo falando sobre 33 coisas sobre regex em javascript, e resolvi falar um pouco sobre a minha experiência em Expressões regulares (regex) e SED. O Regex é muito bom para encontrar padrões em textos e fazer consultas em strings e streams de texto. Entretanto, quando usamos uma ferramenta como o SED para realizar operações em textos, podemos usar as expressões regulares ao máximo, facilitando muito o trabalho com manipulação de textos.
SED, abreviação de stream editor, é um programa presente em sistemas linux que permite uma edição/manipulação muito rápida em arquivos de texto, ou em strings passadas ao programa. Existe uma versão do programa para Windows, mas ela não será discutida neste artigo, pois podem existir variações de entrada via linha de comando. Para usarmos SED e Regex com destreza, precisamos antes compreender como funciona o SED, e em que ponto encaixamos as expressões regulares.
Se você preferir, pode acessar diretamente minha aula sobre SED, disponível no Github
Uma Visão Geral do SED:
Podemos usar o programa diretamente via linha de comando, passando todos os parâmetros, ou chamá-lo a partir de outros programas e/ou scripts para manipular os dados. Algumas opções podem ser passadas para o programa permitindo que o resultado seja colocado diretamente em um arquivo, ou seja mostrado em tela.
O SED permite o uso de expressões regulares normais, ou extended, que possui mais recursos, para uma busca mais complexa. O SED ainda permite o uso de retrovisores para fazer uso de uma resposta de uma busca em mais de um ponto, além de fazer substituições dentro de um arquivo de texto.
Deseja remover linhas que contenham um padrão? Há um modificador para isso. Deseja colocar a primeira letra de cada linha em maiúsculo? Também é possivel fazer. Deseja remover apenas as 3 primeiras linhas de um determinado documento?SED também faz. SED é muito poderoso e saber usar pode resolver muitos problemas que geralmente temos com arquivos para importação. O arquivo veio num formato separado por ";" e você precisa que seja separado por "|" ? em uma linha de comando você pode fazer essa conversão. Não importa o tamanho do arquivo, o SED faz.
E como eu uso este programa?
Se você acessar a minha aula sobre SED fica mais fácil de compreender como funciona. Os exemplos foram criados usando o ubuntu como distribuição de linux. Se você replicar os comandos da aula, vai poder ver como tudo funciona.
O comando: sed 's/J[AEIOU]AO/JOAO/g' cadastro.txt faz a alteração de todas as palavras JAAO,JEAO,JIAO,JOAO,JUAO para a palavra JOAO, que estiverem dentro do arquivo cadastro.txt e mostra o arquivo na tela. Se você usar o modificador "-i" o programa irá alterar diretamente dentro do arquivo.