Editor de fluxo (SED): o básico

Editor De Fluxo Sed O Basico



SED, também conhecido como editor de stream, é uma ferramenta muito útil. É usado para pesquisar uma palavra ou padrão específico e, posteriormente, fazer algo com a palavra ou padrão ou, em outras palavras, transformá-lo. No Windows, o SED também é conhecido como funções “localizar” e “substituir”. O SED vem com o Ubuntu, então não há necessidade de instalar nada; basta começar a usá-lo. Neste tutorial, mostraremos como usar o SED ou o editor de stream.

O comando “S”

O mais importante de todos os comandos no SED ou no editor de fluxo é o comando “s”. O “s” significa substituto. A sintaxe é a seguinte:







's / expressão regular / substituição / bandeiras


Então, vamos usar um arquivo chamado “file.txt” para os exemplos. Esta é a aparência de “file.txt” se você catá-lo:




Vamos usar um exemplo para mostrar como funciona o comando “s”:



mas 's / primeiro / lua / eu’arquivo.txt > lua.txt


Quando tal expressão é dada, significa:





    • s – Significa substituto.
    • primeiro – A palavra a ser pesquisada no arquivo chamado “arquivo.txt”.
    • lua – A palavra “primeiro” é substituída pela palavra “lua”.
    • i – Significa ignorar. Iremos ignorar esta parte na primeira parte.
    • file.txt – O arquivo onde o SED irá procurar o padrão ou a palavra. Neste caso, a palavra “primeiro” será:
    • pesquisado em arquivo.txt

    • moon.txt – Quando a palavra “primeiro” for substituída pela palavra “moon”, ela será salva em “moon.txt”.

Então, o que está acontecendo aqui? O SED substitui a palavra “primeiro” por “lua” apenas na primeira instância (isso significa que se a palavra “primeiro” ocorrer várias vezes, ela não a substituirá completamente ou a substituirá várias vezes). O arquivo que procura chama-se “file.txt” e uma vez feita a transformação ou substituição, será salvo em “moon.txt”.



Isto é o que parece:


Lembre-se de colocar “/” onde precisa estar. Se você omitir “/”, o SED não aceitará o comando.

Até agora, apenas substituímos a palavra “primeiro” por “encontrado” com a substituição. Agora, suponha que queiramos substituir a palavra “linha” (que ocorre muitas vezes – quatro vezes para ser mais específico) na terceira linha pela palavra “anjo”.

Como visamos especificamente essa terceira linha? Usamos o seguinte comando:

mas '3s / linha / anjo / eu’arquivo.txt > anjo.txt


Então, o que aconteceu aqui? Bem, o “3” especifica o número da linha. Portanto, vai para a terceira linha. Em seguida, substitua a palavra “linha” por “anjo” no arquivo denominado “arquivo.txt” e salve o arquivo transformado como “anjo.txt”.


E se quisermos substituir ou transformar as linhas “3” e “4”?

mas ' 3 ,4s / linha / anjo / eu’arquivo.txt > anjo2.txt



Observe que no exemplo anterior, usamos o sinalizador “i” para ignorar. Agora, usamos o sinalizador “g” para global.

Vamos usar um exemplo para mostrar como funciona o comando “s”:

mas 's / linha / sol / g’arquivo.txt > sol.txt


Quando tal expressão é dada, significa:

O “g” significa global. Lembre-se que no primeiro exemplo, quando utilizamos a flag “i”, há apenas uma substituição. Agora que adicionamos um “g” para global, significa substituir em todos os lugares. Então, em vez de dizer primeira linha, segunda linha, terceira linha e última linha, diz primeiro sol, segundo sol, terceiro sol e último sol. Ele substitui a palavra linha em todo o arquivo (em todos os lugares) pela palavra “sol”.


Agora, e se quisermos selecionar uma única linha com base em uma palavra que ela contém? Bem, podemos ver que a última linha de “file.txt” contém a palavra “last”. Agora, suponha que queiramos “Esta é a última linha. Esta é a última frase. frase para se tornar “Este é o último fantasma. Esta é a última frase.

Escrevemos o seguinte:

mas ' / durar / é / linha / fantasma / 'arquivo.txt > fantasma.txt


O “último” aqui diz ao SED para procurar a linha que contém a palavra “último” e então substituir a palavra “linha” por “fantasma” dentro dessa linha.


Agora, suponha que queremos fazer o oposto. Suponha que queiramos que cada linha sem a palavra “última” tenha a palavra “linha” alterada para “fantasma”. Vamos escrever o seguinte:

mas ' / durar /! é / linha / fantasma / 'arquivo.txt > fantasma2.txt


Como você pode ver aqui, cada linha, exceto a última (que contém a palavra “última”), tem a palavra “linha” substituída pela palavra “fantasma”.


Também podemos fazer isso com números de linha:

mas ' 3 , 4 ! é / linha / noite / eu’arquivo.txt > noite.txt


Neste caso, as linhas 3 e 4 são omitidas, mas todas as outras linhas têm a palavra “linha” substituída pela palavra “noite”.

Vários comandos

Agora, e se você tivesse vários comandos? Você prefere fazer um de cada vez ou todos de uma vez e economizar tempo e trabalho?

E se quisermos mudar a palavra “primeiro” para “dia”, “segundo” para “noite” e “o resto” para “fantasma”? Usamos o ponto e vírgula para fazer isso. Não se esqueça de colocar ponto e vírgula no final!

Observe que você não precisa necessariamente colocar o sinalizador “i” ou “ignorar”, mas é absolutamente necessário colocar a barra (/) após a frase de transformação.

Agora, vamos verificar com um exemplo:

mas 's / primeiro / dia / ; é / segundo / noite / ; é / terceiro / fantasma / ; é / durar / fantasma / ;’ arquivo.txt > combinação.txt


Conclusão

O editor de fluxo ou SED é uma forma de selecionar uma palavra ou padrão e transformá-lo. Na verdade, é o equivalente em linha de comando das funções “localizar” e “substituir” do Windows. O comando SED pode ser muito complicado, mas se você souber pelo menos o básico, estará pronto para executá-lo! SED é na verdade uma ferramenta muito poderosa com muitas funções. Embora não possamos cobrir todos eles em um tutorial, cobrimos os fundamentos do SED. Em essência, aprendemos como transformar uma palavra específica usando o comando “s”, onde “s” significa substituto. Podemos substituir as palavras por outras palavras, escolher seletivamente uma linha onde ocorrerá a substituição ou até mesmo negá-la. De qualquer forma, esta é a parte mais fácil do SED.

Boa codificação!