Sed - linhas descomentando em um arquivo de texto
- 548
- 140
- Maurice Champlin
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:
sed1 | sed |
Vamos quebrar este comando:
sed
é o próprio comando seds
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 consolearquivo 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.sh1 | script 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> outputfile1 | sed '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/^#//' inputfile1 | sed -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> outputFile1 | sed -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.