Pesquisa de site

Como usar o Sed para editar o arquivo no local


O Linux oferece suporte a vários tipos de utilitários de linha de comando para automatizar as tarefas que tornam o Linux na linha líder de sistema operacional; por sua importância e uso, possui centenas de distribuições baseadas em Linux e suportam inúmeros comandos para executar ações automaticamente.

Há um enorme conjunto de comandos disponíveis para o Ubuntu e o utilitário de comando sed é um deles; o comando sed pode ser usado para executar operações fundamentais em arquivos de texto, como edição, exclusão de texto dentro de um arquivo.

Juntamente com essas ações primárias, o sed fornece uma longa lista de opções suportadas que podem ser usadas para manipular a saída de acordo com os requisitos do usuário, inspiradas nisso; compilamos um guia que demonstrará como manter as alterações no arquivo original usando o comando sed:

Como editar o arquivo no local usando o comando sed

Esta opção do comando sed é usada para editar o arquivo e salvar as alterações no original e pode ser usada com todas as operações do comando sed:

A sintaxe para esta opção é descrita abaixo:

Sintaxe

sed -i command [file name]

ou

sed --in-place command [file name]

Na sintaxe fornecida acima, a opção “-i” é constante (quando você está fazendo alterações no arquivo) e a palavra-chave “command” contém as operações (substituição, exclusão, anexação) que estão sendo executadas usando o comando sed; e por último, o “nome do arquivo ” direciona para o nome do arquivo onde todas as ações associadas ao comando sed são executadas.

Pegamos um arquivo de texto que contém poucas linhas de texto:

Vamos extrair o conteúdo do arquivo “examp.txt ” usando o comando mencionado abaixo:

$ cat examp.txt

Vamos começar com o uso básico de que, se usarmos sed sem a opção “-i ” , ele imprimirá o resultado no terminal e o arquivo original permanecerá inalterado (conforme verificado usando o comando “cat ”) como mostrado abaixo:

Diferença entre editar arquivo no local e editar arquivo do comando sed

No comando abaixo mencionado; “s ” é usado para substituição e substituirá a palavra “Debian ” por “Ubuntu ”. Além disso, a letra “g ” no final deste comando é para ação global, significa que a substituição seria realizada em todo o arquivo:

$ sed ‘s/Debian/Ubuntu/g’ examp.txt

E agora use o mesmo comando com a opção “-i ” conforme indicado abaixo; percebe-se que com a ajuda de “-i ” o conteúdo dentro do arquivo original (“examp.txt ”) agora também é alterado, conforme mostrado abaixo:

Nota: Você pode usar “–no local ” em vez de “-i ”; ambas as opções têm a mesma funcionalidade:

$ sed -i ‘s/Debian/Ubuntu/g’ examp.txt

Como editar uma linha específica de arquivo usando o comando sed

E se você quiser alterar o conteúdo de qualquer número de linha específico, poderá adicionar valor numérico com a letra “s”; por exemplo, o comando fornecido abaixo substituirá “Ubuntu ” por “Debian ” apenas na linha número “2” e depois de especificar o número da linha, o propósito da letra “g” é anulado para que você também possa removê-lo:

$ sed -i ‘2s/Ubuntu/Debian/’ examp.txt

Além disso, você pode colocar o sinal “$ ” com a palavra-chave “s ” para realizar as alterações apenas na última linha do arquivo; como o comando escrito abaixo colocará a palavra “Ubuntu ” no lugar de “Linux-Mint ” na última linha de “examp.txt ” :

$ sed -i$s/Ubuntu/Linux-Mint/’ examp.txt

Como excluir uma linha em um arquivo usando o comando sed no lugar

A opção in-place tem um uso extensivo no comando sed conforme discutido acima; além de substituir palavras em uma linha, pode-se excluir a linha inteira e salvar a saída no arquivo pai usando a opção “-i ”: o comando mencionado abaixo excluirá o número da linha “2<” do arquivo “examp.txt”:

$ sed -i ‘2d’ examp.txt

E se você deseja excluir as linhas, exceto a linha número “2”, então você deve escrever o comando como mencionado abaixo:

$ sed -i2!d’ examp.txt

Conclusão

O Ubuntu suporta uma variedade de comandos que podem ser usados para executar as operações primárias em arquivos de texto, como comandos head, ou tail, que podem ser usados para imprimir as linhas disponíveis no início ou no final de um arquivo de texto. No entanto, existem algumas limitações, digamos que você não pode imprimir apenas a linha número 2 de um arquivo de texto usando o comando head (embora a linha número 2 venha na seção head do arquivo). O comando sed lidera outros comandos a esse respeito; este comando no Ubuntu ajuda a realizar operações básicas em arquivos de texto, como substituição, adição, exclusão etc. Observa-se que se o comando sed for usado exceto a opção “-i” então o resultado será impresso apenas no terminal. Neste artigo, a opção local do comando sed é descrita em detalhes e pode ser adotada com todas as operações sed. Para obter uma visão profunda dessa opção, tentamos usá-la com tantos comandos para criar o básico para usuários novatos.

Artigos relacionados: