{"id":36955,"date":"2024-12-16T11:33:04","date_gmt":"2024-12-16T14:33:04","guid":{"rendered":"https:\/\/www.locaweb.com.br\/ajuda\/?post_type=ht_kb&#038;p=36955"},"modified":"2024-12-16T11:33:04","modified_gmt":"2024-12-16T14:33:04","slug":"sed-linux","status":"publish","type":"ht_kb","link":"https:\/\/www.locaweb.com.br\/ajuda\/wiki\/sed-linux\/","title":{"rendered":"Como usar o comando sed no Linux?"},"content":{"rendered":"<p>O <strong>sed, no Linux<\/strong>, \u00e9 uma ferramenta para manipula\u00e7\u00e3o de texto que permite a edi\u00e7\u00e3o de arquivos diretamente da linha de comando.<\/p>\n<p>Uma abrevia\u00e7\u00e3o de \u201cStream Editor\u201d, o comando sed \u00e9 amplamente usado para substituir texto, deletar linhas, acrescentar ou escrever novas informa\u00e7\u00f5es. Tudo isso sem a necessidade de abrir o arquivo em um editor tradicional.<\/p>\n<p>Conhe\u00e7a alguns comandos b\u00e1sicos, al\u00e9m de exemplos pr\u00e1ticos, como instal\u00e1-lo e o seu fluxo de trabalho.<\/p>\n<h2>Veja quais s\u00e3o os comandos sed b\u00e1sicos<\/h2>\n<p>Os comandos b\u00e1sicos do sed permitem opera\u00e7\u00f5es comuns, como deletar, escrever, acrescentar e ler conte\u00fado em arquivos.<\/p>\n<h3>Deletar<\/h3>\n<p>O comando sed permite deletar linhas espec\u00edficas de um arquivo de texto. Essa fun\u00e7\u00e3o \u00e9 eficaz para <strong>limpar arquivos, textos duplicados, entre outros<\/strong>.<\/p>\n<p>Para executar esse comando, voc\u00ea deve utilizar <em>d<\/em> junto com o nome do arquivo entre aspas. Assim, voc\u00ea decide qual linha do arquivo quer deletar.<\/p>\n<p>Por exemplo, para deletar a terceira linha de um arquivo, voc\u00ea pode usar o comando: <em>sed \u20183d\u2019 text.txt<\/em>.<\/p>\n<p>Nesse exemplo, o \u201c3d\u201d indica que a terceira linha (3) ser\u00e1 deletada (d). \u00c9 poss\u00edvel deletar m\u00faltiplas linhas ao especificar um intervalo, como \u201c3,5d\u201d, que deletar\u00e1 da linha 3 at\u00e9 a 5.<\/p>\n<p>Caso voc\u00ea queira apagar apenas uma palavra, \u00e9 poss\u00edvel utilizar um comando para simplificar essa a\u00e7\u00e3o.<\/p>\n<p>Por exemplo, se voc\u00ea quer apagar a palavra \u201csleep\u201d, basta utilizar o comando:<\/p>\n<pre><em>sed\u2018\/sleep\/d\u2019 script.sh.<\/em><\/pre>\n<p>Desse modo, voc\u00ea apagar\u00e1 apenas a palavra desejada, sem a necessidade de apagar todo o conte\u00fado.<\/p>\n<h3>Escrita<\/h3>\n<p>O comando sed tamb\u00e9m pode ser usado para escrever novas linhas em um arquivo. Para isso, utilize <em>w<\/em>, seguido pelo n\u00famero da linha e do arquivo, entre aspas. Veja o comando que l\u00ea a segunda linha e a escreve no arquivo selecionado:<\/p>\n<pre> <em>sed '2~2 w text2.txt' text.txt.<\/em><\/pre>\n<p>Nesse caso, a nova linha ser\u00e1 adicionada ap\u00f3s a segunda linha do arquivo. Esse comando \u00e9 \u00fatil para acrescentar coment\u00e1rios ou informa\u00e7\u00f5es sem alterar o conte\u00fado original.<\/p>\n<h3>Acrescentar<\/h3>\n<p>Vamos criar um arquivo chamado<strong> \u201c<\/strong>config.txt\u201d, que serve para configurar um site em um servidor. Nesse arquivo, j\u00e1 temos algumas informa\u00e7\u00f5es, como:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>A porta que o servidor vai usar (no caso, Port 80, que \u00e9 a porta padr\u00e3o para sites);<\/li>\n<li>O nome do site (neste exemplo,<strong> \u201c<\/strong>example.com\u201d).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Agora, precisamos acrescentar uma informa\u00e7\u00e3o: o diret\u00f3rio raiz, que \u00e9 basicamente o local no computador no qual est\u00e3o guardados os arquivos do site.<\/p>\n<p>Para fazer isso, vamos adicionar uma nova linha ao arquivo, logo ap\u00f3s a linha com o nome do site.<\/p>\n<p>O comando que usamos para isso \u00e9:<\/p>\n<pre> <em>sed<\/em><em> \u2018\/ServerName\/a\\DocumentRoot \/var\/www\/html\u2019 config.txt.<\/em><\/pre>\n<p>Esse comando vai procurar o local em que est\u00e1 escrito \u201cServerName\u201d e colocar a linha <em>DocumentRoot \/var\/www\/html <\/em>logo abaixo.<\/p>\n<p>No final, o arquivo vai ficar assim:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Port 80;<\/li>\n<li>ServerName example.com;<\/li>\n<li>DocumentRoot \/var\/www\/html.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Essa \u00faltima linha indica que os arquivos do site est\u00e3o na pasta \u201c\/var\/www\/html\u201d. O comando sed s\u00f3 foi usado para adicionar essa linha no lugar certo, sem precisar editar o arquivo manualmente.<\/p>\n<h3>Leitura<\/h3>\n<p>Vamos usar um comando que utiliza o conte\u00fado de um arquivo de texto (chamado \u201ctext.txt\u201d) e o coloca dentro de outro arquivo (chamado \u201ctext2.txt\u201d). Vamos inserir o conte\u00fado logo ap\u00f3s a terceira linha do \u201ctext2.txt\u201d.<\/p>\n<p>O comando correspondente \u00e9 o:<\/p>\n<pre><em>sed '3 r text.txt' <\/em><em>text2.txt<\/em><strong>.<\/strong><\/pre>\n<p>Aqui, o n\u00famero \u201c3\u201d significa que o conte\u00fado de \u201ctext.txt\u201d ser\u00e1 colocado depois da terceira linha do \u201ctext2.txt\u201d.<\/p>\n<p>Ap\u00f3s rodarmos esse comando, se olharmos o arquivo \u201ctext2.txt\u201d (com outro comando, como o cat), veremos que ele, agora, tem o conte\u00fado de \u201ctext.txt\u201d inserido logo ap\u00f3s a terceira linha.<\/p>\n<p>Ou seja, o comando faz o seguinte:<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\n<li>Pega o conte\u00fado do \u201ctext.txt\u201d;<\/li>\n<li>Insere esse conte\u00fado logo ap\u00f3s a terceira linha do \u201ctext2.txt\u201d.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p>O objetivo \u00e9 <strong>juntar o conte\u00fado de dois arquivos de uma forma bem espec\u00edfica<\/strong>.<\/p>\n<h2>Confira alguns exemplos de uso do sed<\/h2>\n<p>O sed pode ser usado em diversos cen\u00e1rios. Abaixo, est\u00e3o alguns exemplos pr\u00e1ticos que ilustram o seu uso no dia a dia.<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><strong>Substitui\u00e7\u00e3o de texto<\/strong>: para substituir todas as ocorr\u00eancias de &#8220;Linux&#8221; por &#8220;GNU\/Linux&#8221; em um arquivo:<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<pre><em>sed 's\/Linux\/GNU\\\/Linux\/g' arquivo.txt<\/em><\/pre>\n<p>\u2014 o comando \u201cs\u201d \u00e9 usado para substitui\u00e7\u00e3o e o \u201cg\u201d, no final, indica que todas as ocorr\u00eancias devem ser substitu\u00eddas;<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><strong>Excluir linhas vazias<\/strong>: para deletar todas as linhas vazias de um arquivo:<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<pre><em>sed '\/^$\/d' arquivo.txt<\/em><\/pre>\n<p>\u2014 aqui, o \u201c^$\u201d identifica linhas vazias e o \u201cd\u201d as deleta;<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><strong>Adicionar prefixo a cada linha<\/strong>: para adicionar um prefixo \u201c#\u201d em cada linha de um arquivo (\u00fatil para comentar um script), use:<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<pre><em>sed 's\/^\/# \/' arquivo.txt<\/em>;<\/pre>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><strong>Substituir texto em v\u00e1rias linhas<\/strong>: para substituir a palavra &#8220;erro&#8221; por &#8220;ERRO&#8221; nas linhas 10 a 20, por exemplo:<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<pre><em>sed '10,20s\/erro\/ERRO\/g' arquivo.txt<\/em><\/pre>\n<p>\u2014 esse uso espec\u00edfico \u00e9 excelente para destacar se\u00e7\u00f5es de logs ou relat\u00f3rios.<\/p>\n<h2>Instala\u00e7\u00e3o do sed<\/h2>\n<p>O sed, geralmente, j\u00e1 vem instalado em distribui\u00e7\u00f5es Linux. No entanto, caso n\u00e3o esteja dispon\u00edvel, voc\u00ea pode instal\u00e1-lo facilmente.<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Acesse o seu <a href=\"https:\/\/www.locaweb.com.br\/servidor-vps\/\" target=\"_blank\" rel=\"noopener noreferrer\">VPS<\/a> Linux;<\/li>\n<li>No Ubuntu ou Debian, use:<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<pre> <em>sudo apt-get install sed<\/em>;<\/pre>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Em distribui\u00e7\u00f5es baseadas no Red Hat, como o Fedora, o comando \u00e9:<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<pre><em>sudo yum install sed<\/em>;<\/pre>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Ap\u00f3s a instala\u00e7\u00e3o, voc\u00ea pode confirmar se o sed funciona corretamente com o comando:<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<pre><em>sed --version<\/em>.<\/pre>\n<h2>Sed Workflow<\/h2>\n<p>Para utilizar o sed de forma eficiente, \u00e9 importante entender o seu fluxo de trabalho. O sed l\u00ea um arquivo linha por linha, aplica os comandos especificados e imprime o resultado. Isso permite editar arquivos grandes sem carregar o arquivo inteiro na mem\u00f3ria, o que \u00e9 um diferencial para scripts de automa\u00e7\u00e3o.<\/p>\n<p>De maneira resumida, o workflow do sed \u00e9 assim:<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\n<li><strong>Leitura<\/strong>: o sed l\u00ea a entrada do arquivo ou stream;<\/li>\n<li><strong>Aplica\u00e7\u00e3o dos comandos<\/strong>: ele aplica os comandos especificados (substitui\u00e7\u00e3o, dele\u00e7\u00e3o, entre outros);<\/li>\n<li><strong>Impress\u00e3o<\/strong>: imprime o resultado modificado, que pode ser redirecionado para um arquivo de sa\u00edda.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p>Um exemplo de workflow b\u00e1sico seria:<\/p>\n<pre><em>sed 's\/velho\/novo\/g' arquivo.txt &gt; <\/em><em>arquivo_modificado.txt<\/em>.<\/pre>\n<p>Esse comando substitui &#8220;velho&#8221; por &#8220;novo&#8221; em<strong> \u201c<\/strong>arquivo.txt\u201d e salva o resultado em \u201carquivo_modificado.txt\u201d.<\/p>\n<p>Agora que voc\u00ea j\u00e1 sabe como usar o sed, aproveite tamb\u00e9m para conhecer outros <a href=\"https:\/\/www.locaweb.com.br\/blog\/temas\/codigo-aberto\/comandos-linux\/\" target=\"_blank\" rel=\"noopener noreferrer\">comandos Linux<\/a> importantes!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>O sed, no Linux, \u00e9 uma ferramenta para manipula\u00e7\u00e3o de texto que permite a edi\u00e7\u00e3o de arquivos diretamente da linha de comando. Uma abrevia\u00e7\u00e3o de \u201cStream Editor\u201d, o comando sed \u00e9 amplamente usado para substituir texto, deletar linhas, acrescentar ou escrever novas informa\u00e7\u00f5es. Tudo isso sem a necessidade de abrir&#8230;<\/p>\n","protected":false},"author":48,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"footnotes":""},"ht-kb-category":[118],"ht-kb-tag":[],"class_list":["post-36955","ht_kb","type-ht_kb","status-publish","format-standard","hentry","ht_kb_category-vps-locaweb"],"_links":{"self":[{"href":"https:\/\/www.locaweb.com.br\/ajuda\/wp-json\/wp\/v2\/ht-kb\/36955","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.locaweb.com.br\/ajuda\/wp-json\/wp\/v2\/ht-kb"}],"about":[{"href":"https:\/\/www.locaweb.com.br\/ajuda\/wp-json\/wp\/v2\/types\/ht_kb"}],"author":[{"embeddable":true,"href":"https:\/\/www.locaweb.com.br\/ajuda\/wp-json\/wp\/v2\/users\/48"}],"replies":[{"embeddable":true,"href":"https:\/\/www.locaweb.com.br\/ajuda\/wp-json\/wp\/v2\/comments?post=36955"}],"version-history":[{"count":2,"href":"https:\/\/www.locaweb.com.br\/ajuda\/wp-json\/wp\/v2\/ht-kb\/36955\/revisions"}],"predecessor-version":[{"id":36957,"href":"https:\/\/www.locaweb.com.br\/ajuda\/wp-json\/wp\/v2\/ht-kb\/36955\/revisions\/36957"}],"wp:attachment":[{"href":"https:\/\/www.locaweb.com.br\/ajuda\/wp-json\/wp\/v2\/media?parent=36955"}],"wp:term":[{"taxonomy":"ht_kb_category","embeddable":true,"href":"https:\/\/www.locaweb.com.br\/ajuda\/wp-json\/wp\/v2\/ht-kb-category?post=36955"},{"taxonomy":"ht_kb_tag","embeddable":true,"href":"https:\/\/www.locaweb.com.br\/ajuda\/wp-json\/wp\/v2\/ht-kb-tag?post=36955"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}