caso abaixo e avirgula: prompt$ sed'\,/usr/local/bin,d' texto.txtConfusao de delimitadores com o textoa ser procurado e muito comum de acontecer, entao se algo nao estafuncionando como deveria, olhe com cuidado para ver se nao haconflitos entre eles. Gravando o resultado no mesmoarquivoProblema inicialO procedimento comum quando se quergravar num arquivo o resultado de um comando Sed, e oredirecionamento: prompt$ sed 'comando' texto.txt >texto-alterado.txtMas e muito comum, ao alterarmos umarquivo, queremos gravar estas alteracoes no proprio arquivooriginal. A tentativa intuitiva seria: prompt$ sed 'comando' texto.txt >texto.txtMas e so fazer para ver. Alem de naodar certo, voce ainda perdera todo o conteudo do arquivo. Isso acontece porque ao fazer oredirecionamento >, o shell abre imediatamente o arquivoreferenciado, antes mesmo de comecar a executar o comando Sed. Ecomo este e um redirecionamento destrutivo > e nao incremental>>, se o arquivo ja existir, ele sera truncado, e seuconteudo perdido. A essa altura, o Sed comecara seu processamentoja lendo um arquivo texto.txt vazio, e aplicados qualquer comandosSed num arquivo vazio, o resultado sera o proprio arquivo vazio. Solucao genericaPara evitar isso, voltamos a primeiratatica de gravar o resultado num outro arquivo, e depois o maisnatural e mover o arquivo novo sobre o original: prompt$ sed 'comando' texto.txt >texto-alterado.txtprompt$ mv texto-alterado.txt texto.txtPara a grande maioria dos casos, isso esuficiente, mas convem aqui lembrar que caso o arquivo 'texto.txt'possua atributos especiais, grupo diferente do padrao do usuario,ou referencias (links, simbolicos ou nao) para outros arquivos,tudo isso sera perdido. Ao mover o arquivo recem-criado, com osatributos padrao do sistema, sobre o original, este perdera seusatributos e ficara com os padroes do sistema, herdado do arquivonovo. Solucao seguraPara evitar isso, a abordagem maisortodoxa e segura seria aplicar o comando Sed numa copia e gravar oresultado no arquivo original via redirecionamento: prompt$ cp -a texto.txt texto-tmp.txtprompt$ sed 'comando' texto-tmp.txt >texto.txtprompt$ rm texto-tmp.txtNovamente, isso so e necessario comarquivos especiais, senao a solucao com o mv pode ser usada. Mas eimportante ter em mente esta outra maneira e principalmente saber oporque de utiliza-la, sendo este conhecimento aplicavel a qualqueroutro comando do sistema que leia e grave arquivos. Como substituir alguma coisa poruma quebra de linhaNo Sed da GNU, a partir da versao3.02.80(*), foi adicionado o \n como escape valido dos dois lados docomando s///. Com isso a tarefa de colocar cada palavra numa linhaisolada, ou seja, trocar espacos em branco por quebras de linha,fica trivial: prompt$ sed 's/ /\n/g' texto.txtMas com outras versoes do Sed que naoentendem este escape, a quebra de linha deve ser inseridaliteralmente e deve ser escapada: prompt$ sed 's/ /\prompt$ /g'texto.txtComo curiosidade, a operacao inversa,de colocar todas as linhas de um arquivo numa linha so, ja e maistrabalhosa e utiliza o conceito de laco: prompt$ sed ':a;$!N;s/\n/ /g;ta'(*) veja o topico Nota sobre osadicionais GNU Apagando linhas especificasO comando para apagar linhas e o d. O unico detalhe nesta tarefa eespecificar quais linhas voce vai querer apagar. Isso estacompletamente coberto no topico O endereco. Como ignorar maiusculas eminusculasO jeito padrao do Sed ser"ignore-case", e dizendo literalmente todas aspossibilidades, como em: prompt$ sed'/[Rr][Oo][Oo][Tt]/d' texto.txtPara apagar todas as linhas que contema palavra root,