Como modificar texto usando expressões regulares com sed Stream Editor

Conteúdo

Como modificar texto usando expressões regulares com sed Stream Editor

Todos os usuários de computador do mundo, Tarde ou cedo, irá modificar uma string de texto, manualmente ou automaticamente. Seja apresentado ao editor de fluxo, mas, que permite fazer modificações massivas de texto em strings e arquivos.

Expressões regulares na linha de comando

O editor de sequência sed, uma ferramenta disponível por padrão em muitas distribuições Linux, permite que você analise e transforme o texto de uma maneira fácil e direta, se o referido texto está dentro de arquivos ou apenas strings simples na linha de comando. Ele também pode analisar listas de diretórios, resultados da lista de processos e a maioria dos outros tipos de informações que podem fluir para dentro ou para fora de sua sessão de terminal.

Para verificar se o sed está habilitado em sua distribuição Linux, escriba sed --version na linha de comando:

Versão do editor sed stream

Não se preocupe se sua versão for um pouco mais antiga que a mostrada aqui. Será quase definitivamente bom para os exemplos que discutimos aqui. Se a ferramenta não estiver habilitada em sua distribuição, você pode instalá-lo usando sudo apt install sed para sistemas operacionais baseados em Ubuntu / Debian, o sudo yum install sed para sistemas operacionais baseados em RedHat / RPM.

sed aplique uma pequena transformação de texto usando o que é chamado de regex ou expressão regular. Uma expressão regular é uma forma e método de expressar operações de pesquisa, substituição e modificação baseada em texto mais complexa em um formato ainda legível. Expressões regulares são complicadas e podem ser difíceis para iniciantes lerem. Você pode ler nosso guia, Como você realmente usa Regex? Para obter mais informações sobre como ler e escrever Regex.

RELACIONADO: Como você realmente usa Regex?

Para o propósito desta postagem, ficaremos com expressões regulares fáceis de entender e ler. Como um exemplo, o seguinte é uma substituição simples:

Olá, Transformação do ventilador Cloudsavvyit

Como você pode ver, nós repetimos um pequeno trecho de texto e, subseqüentemente, nós o transformamos usando a ferramenta sed. Usamos o comando sed 's’ (substituto) e indicamos o que queríamos mudar. Você pode ler isso de outra maneira, como s|from|to| Onde '|’ é o separador entre as seções / campos, 'S’ é o comando y 'de’ e até’ são as duas opções passadas para o comando 's'.

Por isso, transformamos ‘¡Hola, fãs de tecnologias de informação na nuvem!’ uma “Isso fará com que a entrada do valor fique em branco em vez de, fãs de systempeaker.com!” cambiando solo una parte del texto usando el editor de flujo sed. Vamos dar um exemplo um pouco mais complexo.

Transforme o texto em um arquivo usando o editor de fluxo sed

Aqui, primeiro criamos um arquivo com 3 linhas usando o echo comando com redirecionamento para um arquivo (‘>’ criar um novo arquivo, sobrescrever um arquivo com o mesmo nome se ele existir, e '>>’ é adicionado a um arquivo sem modificá-lo de outra forma). A seguir, mostramos o conteúdo do arquivo usando o cat comando.

Mais tarde, transformamos o conteúdo do arquivo com o sed ferramenta diretamente. Para faze-lo, especificamos a opção '-i’ para sed que edita o arquivo no local. A instrução de transformação de texto real é a mesma de antes. E finalmente especificamos o nome do arquivo no final do comando. Em seguida, verificamos o conteúdo do arquivo e observamos como nossa entrada mudou.

Como você pode começar a ver, ou você já sabe de experiências anteriores, há muito poder disponível na ferramenta sed.

Vamos apimentar um pouco as coisas estendendo nosso regex e método de escrita da instrução de transformação de texto sed:

Uma expressão regular mais complexa e instrução sed

Neste exemplo, nós substituímos a letra 'h’ para ‘_H’ e fizemos isso globalmente (olhe para o qualificador 'g’ perto do final da primeira instrução passada para sed) e sem distinção entre maiúsculas e minúsculas (observe la 'eu’ qualificador também perto do final da primeira declaração). O H’ corresponde mesmo quando o arquivo contém 'H’ devido ao qualificador 'i'.

Mais tarde, começamos uma nova instrução (fim das instruções / terminar com ';’ assim como em muitas outras linguagens de codificação) em que removemos '.com’ apenas procurando por ele e substituindo-o por nada.

Observe também como usamos diferentes separadores alternativos de campo / comando. No primeiro exemplo, usamos '|’ que geralmente é um separador de campo bastante incomum e fácil de usar. Muitas pessoas usam '/', mesmo que isso possa levar a problemas ao analisar nomes de rotas que geralmente contêm '/'.

Ser capaz de usar diferentes separadores de alternativas de campo / permite-lhe usar facilmente outro separador se o seu texto realmente contiver ou provavelmente conterá um caractere específico.

Usando sed com arquivos

Vamos explorar outro exemplo baseado em sed, onde injetaremos texto em um arquivo:

Injetando texto usando o editor de stream sed

Neste exemplo, nós criamos um arquivo com 5 linhas e então usamos uma instrução sed ligeiramente complexa para injetar um separador '-‘ depois de cada segunda linha. Embora a sintaxe seja bastante autoexplicativa, É interessante notar que o comando 'r’ (leitura / adicionar texto de um arquivo) especifica o nome do arquivo de injeção diretamente e ainda dentro da instrução principal, sem qualquer separador.

Você também pode começar a ver que, enquanto aprende uma sintaxe de expressão regular, é benéfico aprender a sintaxe sed em profundidade. É quase como aprender duas novas línguas estrangeiras, mas o benefício é que a sintaxe sed pode crescer com sua necessidade de complexidade adicional.

Vamos explorar um exemplo em que substituímos uma área de texto específica por outra:

Modifique áreas de texto específicas usando a sede

Neste exemplo, procuramos o texto '3', e para essa linha iremos substituir 'C’ por 'Z'. Você vê como a sede pode ser versátil.

Para terminar, podemos analisar a análise de outros tipos de entrada:

Analisando outros tipos de entrada textual com sed

Como você pode ver, nós criamos 3 arquivos e solicite uma lista de diretórios usando o ls comando. Mais tarde, pegamos essa saída como entrada para sed (usando o comando linux pipe, ‘|’) e transformamos parte de nossa lista de diretórios em um sublinhado.

O editor de sequência sed é uma ferramenta versátil que pode ajudá-lo a analisar e transformar quase qualquer texto diretamente da linha de comando do terminal, se a entrada vem de um simples echo demonstração, outras ferramentas do Linux ou de um arquivo de texto simples. Desfrutar!

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.