Sed - linhas descomentando em um arquivo de texto

Sed - linhas descomentando em um arquivo de texto

Sed, abreviatura de "Editor de fluxo", é uma poderosa ferramenta de processamento de texto que é comumente usada em sistemas Linux e Unix. Ele pode executar uma ampla gama de operações em arquivos de texto, incluindo pesquisa, substituição, inserção e exclusão de linhas. Uma tarefa comum que os usuários geralmente precisam executar com o Sed é as linhas descomentando em um arquivo de texto. Neste artigo, forneceremos um guia para dominar o SED e usá -lo para linhas de descomamento em arquivos de texto.

Antes de mergulharmos nos detalhes do uso de linhas de sed para não.”Na programação, um comentário é uma linha de código que é ignorada pelo compilador ou intérprete. É usado para adicionar notas, explicações ou outras informações ao código sem afetar sua funcionalidade. Os comentários são normalmente indicados por um personagem ou sequência especial de caracteres, como "#" em scripts de shell, "//" em C ++, ou "/ * */" em java.

Linhas de descomment em arquivos de texto

Para descomentar, uma linha em um arquivo de texto significa remover os personagens do comentário e tornar a linha ativa ou executável. Por exemplo, considere o seguinte script de shell:

#!/bin/bash # Este é um comentário # echo "Olá, mundo!"
1234#!/bin/bash # Este é um comentário # echo "Olá, mundo!"

Neste script, a primeira linha é chamada de "Shebang" e diz ao sistema qual intérprete usar para executar o script. A segunda e a terceira linhas são comentários que fornecem informações sobre o script, mas não são executados. A quarta linha é o comando real que imprime “Olá, mundo!”Para o console.

Se quiséssemos descobrir a terceira linha e torná -la executável, removeremos o personagem "#" antes do comando "Echo":

#!/bin/bash # Este é um comentário ecoar "Olá, mundo!"
1234#!/bin/bash # Este é um comentário "Olá, mundo!"

Agora que entendemos o conceito de linhas descomentáveis, vamos ver como podemos usar o SED para realizar esta tarefa. O SED usa expressões regulares, ou regex, para combinar padrões em arquivos de texto e aplicar transformações a eles. Para descomentar uma linha, precisamos procurar os personagens do comentário no início da linha e excluí -los.

Aqui está a sintaxe básica para o uso de linhas de descomposição do SED em um arquivo de texto:

sed
1sed

Vamos quebrar este comando:

  • sed é o próprio comando sed
  • s significa "substituto", que é a operação que queremos executar
  • /^#/ é o padrão regex que queremos combinar. O personagem "^" significa "começo da linha" e "#" é o personagem de comentário que queremos remover.
  • // é a corda de substituição, que está vazia neste caso. Isso significa que estamos excluindo os personagens do comentário e não os substituindo por nada.
  • Arquivo de entrada é o nome do arquivo que queremos modificar
  • > é um operador de redirecionamento que envia a saída para um novo arquivo em vez do console
  • arquivo de saída é o nome do novo arquivo que conterá a versão não nomeada do arquivo de entrada

Aqui está um exemplo de como usaríamos este comando para não dominar linhas em um script de shell:

script sed 's/^#//'.SH> não declarado.sh
1script sed 's/^#//'.SH> não declarado.sh

Este comando lerá o conteúdo de roteiro.sh, remova o "#" Personagens de qualquer linha que comece com eles e escreva o resultado para um novo arquivo chamado.sh.

Observe que este comando removerá apenas os personagens do comentário desde o início da linha. Se houver personagens de comentários no meio de uma linha, eles não serão afetados. Para remover todos os caracteres de comentários em um arquivo, podemos modificar o padrão regex para corresponder a qualquer ocorrência de "#" e excluí -lo:

sed 's/#//' inputfile> outputfile
1sed 's/#//' inputfile> outputfile

Este comando removerá tudo "#" caracteres no arquivo, independentemente de onde eles aparecem.

Vale a pena notar que o comando sed que mostramos até agora modificará o arquivo de entrada diretamente. Se você deseja criar um novo arquivo com a versão não declarada do arquivo de entrada, você pode usar o “> O outputfile” Sintaxe, como fizemos nos exemplos acima.

Se você deseja modificar o arquivo de entrada diretamente, pode usar o "-eu" opção, que significa "no local":

sed -i 's/^#//' inputfile
1sed -i 's/^#//' inputfile

Este comando removerá o "#" caracteres do próprio arquivo de entrada, sem criar um novo arquivo.

Outra opção útil no SED é o "-E" opção, que permite especificar vários comandos sed em uma única linha de comando. Isso pode ser útil se você quiser executar várias transformações em um arquivo:

sed -e 's/^#//' -e 's/^ *//' inputfile> outputFile
1sed -e 's/^#//' -e 's/^ *//' inputfile> outputFile

Este comando primeiro removerá o “#”Personagens de qualquer linha que começam com eles e depois removem os espaços que aparecerem no início de cada linha.

Conclusão

Em conclusão, o domínio da sed é uma habilidade essencial para qualquer usuário do Linux ou Unix que trabalhe com arquivos de texto. Usar as linhas de sed para não dominar em um arquivo é uma tarefa comum que pode ser realizada facilmente com o “S/^#//” comando. Ao combinar este comando com outros recursos do SED, você pode executar operações poderosas de processamento de texto em seus arquivos e automatizar muitas tarefas tediosas.