NOTÍCIAS

[ANONYMOUS][grids]

'Sed' Comando no Linux: aplicativos úteis explicados

 'Sed' Comando no Linux: aplicativos úteis explicados

Hav você sempre necessário substituir algum texto em um arquivo muito rapidamente? Então você tem que abrir seu editor de texto, encontrar a linha e, em seguida, digite o seu substituto. E se você tiver que fazer isso muitas vezes? E se não for exatamente a mesma coisa e você tiver que executar várias pesquisas e substituir cada ocorrência? É entediante muito rapidamente, mas existe uma maneira melhor de fazer isso com uma ferramenta chamada  sed .
Nós escrevemos sobre  POSIX e revisamos algumas das interfaces e utilidades que um sistema deve fornecer para ser compatível com POSIX. A ferramenta de linha de comando  sed é um desses utilitários que fornecem uma maneira rica em recursos para filtrar, localizar, substituir e reorganizar dados em arquivos de texto. É uma ferramenta extremamente poderosa que é muito fácil de começar, mas muito difícil de aprender completamente devido ao seu número aparentemente infinito de recursos.
Primeiro, devemos notar que a implementação GNU do  sed , enquanto compatível com POSIX, vai além da especificação para fornecer extensões e recursos não descritos no requisito POSIX. Ao invocar o  sed você vai querer usar o  sinalizador –posix para desabilitar todas as extensões específicas do GNU e permitir mais portabilidade. Isso é fundamental ao escrever scripts que você pretende executar em várias plataformas. Por exemplo, o conjunto de ferramentas fornecidas com o macOS não serão as ferramentas GNU, nem aquelas normalmente encontradas nos * BSDs.

Como usar o comando sed no Linux?

A sintaxe geral é a seguinte
sed [OPTION]… {script-only-if-no-other-script} [arquivo de entrada]…
É um pouco enigmático, mas essencialmente espera as opções seguidas por um conjunto de instruções em forma textual e, em seguida, o arquivo para ler. No caso de você canalizar texto para  sed, você pode omitir o arquivo de entrada.
Existem vários modos diferentes nos quais o  sed pode operar, alguns podem ser combinados. Os que abordamos são os básicos, mas ainda são muito poderosos e se tornam ainda mais importantes à medida que você desenvolve seu conhecimento sobre  sed e expressões regulares.
  • p - Imprimir - imprime linhas com texto correspondente
  • d - Excluir - exclui linhas com texto correspondente
  • s - Substituto - substitui ou substitui o texto correspondente em cada linha
Além dos modos de operação, há muitos sinalizadores que podem ser usados ​​no final de um texto de padrão para aumentar o comportamento de seu comando. Nós estaremos usando o  sinalizador g para indicar a substituição global, em vez de apenas substituir a primeira ocorrência em cada linha, como padrão.
Alguns  sinalizadores de comando  sed (em oposição aos sinalizadores de padrão) que utilizaremos são os seguintes -
  • n - suprime a impressão automática de texto que não corresponde
  • E / r - ativa expressões regulares estendidas
  • i - edita o arquivo em vez de imprimir na tela
Primeiro, precisamos discutir a noção de um endereço em  sed . Um endereço é simplesmente um local no texto. Quando um texto corresponde a um padrão fornecido, o local da correspondência se torna o endereço atual dentro do qual o comando é executado. Há também suporte para intervalos de endereços no  sed que permite especificar uma parte de um arquivo para processamento, deixando o restante sozinho.
Aqui, podemos especificar um intervalo de linhas para imprimir -
sed -n '2,10p' myfile.txt
Nós especificamos as linhas 2 a 10 para serem impressas. A sintaxe no  sed é estranha, mas é eficaz. Usamos o  sinalizador -n aqui para garantir que apenas essa correspondência seja impressa, caso contrário, todas as linhas serão impressas e as que corresponderem serão duplicadas.
NOTA: no  sed , as linhas começam em 1, não em 0.
Por outro lado, podemos excluir as mesmas linhas.
sed '2,10d' myfile.txt
Como não estamos exibindo apenas aqueles que correspondem, queremos remover nossa  sinalização -n para que nossas linhas sejam impressas.
Esses exemplos são muito artificiais, por isso é difícil ver como isso pode ser muito útil, mas chegaremos lá.
Em seguida, podemos começar substituindo ocorrências de um padrão particular em uma linha. Isso é particularmente útil para administradores de sistema. Sempre que eu instalo o Linux em uma nova máquina, quero ativar o sshd, mas quero ter certeza de que o usuário root não pode efetuar login.
sed -i 's / [#] PermitRootLogin yes / PermitRootLogin não / g' / etc / ssh / sshd_config
Este comando irá procurar através de  / etc / ssh / sshd_config pela linha que contém  #PermitRootLogin yes  (com ou sem o #) e alterá-lo para  PermitRootLogin no no lugar. Os colchetes permitem a correspondência opcional, que é muito poderosa. Diferentes distribuições são enviadas com diferentes padrões nas configurações, então isso é muito útil.
OBSERVAÇÃO: Tenha muito cuidado ao usar o  sinalizador -i, pois você pode facilmente perder o trabalho ou destruir a configuração de um sistema.
Aqui podemos compor algumas funções diferentes no  sed .
sed '2,10 {s / hello / Olá /;}' myfile.txt
Isso é um pouco mais avançado. O que estamos fazendo aqui é dizer  ao sed para executar o comando nas linhas 2 a 10. O mesmo pode ser feito para imprimir ou excluir todas as linhas com uma correspondência de padrão específica também.
Existem muitas funcionalidades em  sed e não há como cobrir todas elas. Se você gostou deste tutorial, deixe-nos saber e nós definitivamente faremos um pouco mais. Mostre-nos alguns dos seus comandos sed favoritos  nos comentários e sinta-se à vontade para solicitar mais tutoriais de comando.