O comando sed (stream editor), ou seja, editor de fluxo, atualmente é bastante utilizado por todas as distribuições Linux/GNU. Muito útil para transformar textos, utilizando um arquivo ou uma entrada como o pipe.
Exemplos:
Retira espaços em brancos.
# sed -e 's/ //g'
Retira todos os espaços em branco do arquivo /etc/passwd que contenha como shell padrão o bash.
[root@celta /]# cat /etc/passwd | grep bash | sed -e 's/ //g'
root:x:0:0:root:/root:/bin/bash
tadeu:x:1000:1000::/home/tadeu:/bin/bash
A opção -e mostra na tela, para trocar no arquivo utilizamos a opção -i.
Trocando tabulação:
[root@celta etc]# cat hosts.bkp | sed -e 's/\t/ /g'
192.168.56.2 celta.cissaspike.net
192.168.56.3 debianjessie.com.br
192.168.0.103 notebook
Nesse exemplo troquei por um espaço simples mas podemos trocar por outros caracteres também.
Trocando uma palavra:
[root@celta etc]# sed -e 's/root/bernacchi/g' < /etc/passwd | grep bash
bernacchi:x:0:0:bernacchi:/bernacchi:/bin/bash
Colocando uma palavra no início da linha:
[root@celta etc]# sed -e 's/^/LINHA => /g' < /etc/passwd
LINHA => root:x:0:0:root:/root:/bin/bash
LINHA => bin:x:1:1:bin:/bin:/sbin/nologin
LINHA => daemon:x:2:2:daemon:/sbin:/sbin/nologin
...
...
...
Coloca uma palavra no final do arquivo:
[root@celta etc]# sed -e 's/$/ <= FINAL/g' < /etc/passwd
root:x:0:0:root:/root:/bin/bash <= FINAL
bin:x:1:1:bin:/bin:/sbin/nologin <= FINAL
daemon:x:2:2:daemon:/sbin:/sbin/nologin <= FINAL
...
...
...
Deleta todas as linhas que contenham a string 'root':
[root@celta etc]# sed -e '/root/d' passwd.bkp | grep root
Deleta todas as linhas que começam com a string 'root':
[root@celta etc]# sed -e '/root/d' < passwd.bkp
Retira todas as linhas em branco do arquivo:
[root@celta etc]# sed -e '/^$/d' /etc/hosts.bkp
192.168.56.2 celta.cissaspike.net
192.168.56.3 debianjessie.com.br
192.168.0.103 notebook
Retirar todos os espaços em branco:
[root@celta etc]# sed 's/[[:blank:]]//g' input.txt
[root@celta etc]# sed 's/[[:space:]]//g' input.txt
Insere da linha 2 a 5 o caracter '#':
[[root@celta etc]# sed -e '2,5s/^/#/' < /etc/passwd
root:x:0:0:root:/root:/bin/bash
#bin:x:1:1:bin:/bin:/sbin/nologin
#daemon:x:2:2:daemon:/sbin:/sbin/nologin
#adm:x:3:4:adm:/var/adm:/sbin/nologin
#lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
Insere da linha 2 a 5 a palavra INICIO:
[root@celta etc]# sed -e '2,5s/^/INICIO /' < /etc/passwd
root:x:0:0:root:/root:/bin/bash
INICIO bin:x:1:1:bin:/bin:/sbin/nologin
INICIO daemon:x:2:2:daemon:/sbin:/sbin/nologin
INICIO adm:x:3:4:adm:/var/adm:/sbin/nologin
INICIO lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
Insere no final da linha 5 a palavra TEXTO:
[root@celta etc]# sed -e '5s/$/ TEXTO/' < /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin TEXTO
Vim
Insere conteúdo do arquivo.txt na posição 5 de outro arquivo:
[root@celta etc]# cat arquivo.txt
tadeu bernacchi blablabla etc etc etc
O cursor tem que estar na posição desejada (5).
: r arquivo.txt
Deletar um bloco de texto:
->ESC,
->: set number
->1,50d
Vai deletar da linha 1 a 50.
Referência:
https://www.tecmint.com/linux-sed-command-tips-tricks/