Qual é a opção G no SED

Qual é a opção G no SED

"O termo sed é uma abreviação de Editor de fluxo. Em Unix/Linux, o sed Comando analisa e transforma fluxos (textos, na maioria dos casos). É uma ferramenta de linha de comando que vem pré-instalada em todos os sistemas Unix/Linux.”

Neste guia, exploraremos o G opção em sed.

Uso básico de sed

O uso mais comum do comando sed é encontrar e substituir o conteúdo em um determinado fluxo. A estrutura de comando é a seguinte:

$ sed 's ///'


Dê uma olhada no exemplo a seguir:

$ echo "The Quick Brown Fox" | sed 's/the/the/'



Aqui,

    • O eco Comando imprime a string fornecida no Stdout. Em Bash, Stdout, stdin e stderr são fluxos de dados embutidos.
    • O sed Usos de comando Stdout como o fluxo, opera conforme especificado e imprime a saída no console.

Se você está tentando editar um arquivo de texto, o SED não alterará o conteúdo do arquivo por padrão. Isso é para evitar perda acidental de dados. Para alterar o conteúdo de um arquivo diretamente, você precisa executar sed com a edição no local.

A opção G em sed

Ao encontrar e substituir, o comportamento padrão de sed é encerrar suas ações ao encontrar a primeira instância. O exemplo a seguir demonstra esse comportamento perfeitamente:

$ echo "o the the" | sed 's/the/the/'



Aqui,

    • Usando o eco comando, estamos passando a mesma palavra "o" várias vezes para o sed comando.
    • No entanto, na saída, apenas a primeira instância de "o" é transformada em "o".

Para instruir o SED para transformar todas as instâncias correspondentes do padrão fornecido, temos que adicionar a opção G. Atualize o comando da seguinte forma:

$ echo "o the the" | sed 's/o/o/g'



Agora, todas as instâncias de "the" são alteradas para "o" adequadamente.

A opção G em sed

Finalmente chegamos ao ponto de foco deste guia. Enquanto o g a opção é aplicável à substituição de texto, o G a opção é usada para um propósito completamente diferente.

Usando o G Opção, podemos anexar espaço para manter espaço para padrão. Em termos simples, podemos adicionar novas linhas antes/depois do padrão de correspondência.

Para demonstração, criei um arquivo de texto de amostra teste.TXT:

gato << EOF > teste.TXT
o
rápido
marrom
o
raposa
Eof


Espaçamento adicional

Agora podemos executar várias operações no espaçamento do arquivo. Por exemplo, para dobrar o espaço do arquivo, use o seguinte comando:

$ sed g teste.TXT



Da mesma forma, podemos triplicar o espaço do arquivo:

$ sed 'g; g' teste.TXT



Aqui,

    • Nos dois casos, porque não estamos fornecendo nenhum padrão para corresponder, sed está correspondendo a todos os textos do arquivo.
    • O sed Command Works linha por linha em um determinado fluxo de texto. Depois de corresponder a cada linha (porque nenhum padrão específico foi fornecido), uma nova linha é adicionada.

Removendo espaçamento adicional

Também podemos usar o G Opção para excluir todas as linhas em branco e espaço duplo:

$ sed 'g; g' teste.txt | sed '/^$/d; g'

Inserindo linhas em branco antes/depois das partidas

Podemos especificar um padrão usando expressão regular e dizer a SED para adicionar uma linha em branco antes/depois dela.

O primeiro exemplo será adicionar uma linha em branco abaixo do padrão de correspondência:

$ sed '/the/g' teste.TXT



O próximo exemplo será adicionar uma linha em branco acima do padrão de correspondência:

$ sed '/the/x; p; x;' teste.TXT



Finalmente, podemos combinar os dois para inserir linhas em branco ao redor do padrão de correspondência:

$ sed '/the/x; p; x; g;' teste.TXT


Pensamentos finais

Neste guia, demonstramos com sucesso várias maneiras de usar o G opção com sed Para adicionar espaços no texto. Essa técnica pode ser útil em várias situações, por exemplo, destacando linhas específicas em um log de depuração.

Uma enorme vantagem do sed é seu suporte regular de expressão. Saiba mais sobre sed com regex. O comando sed também pode ser facilmente integrado ao script de shell.

Computação feliz!