índice
2.1 Novo conteúdo --- Comando a
2.2 Substituir conteúdo --- comando c
2.3 Excluir conteúdo --- excluir a linha especificada
2.4 Inserir conteúdo --- comando i
2.5 Substituir conteúdo --- Comandos
O comando sed do Linux usa scripts para processar arquivos de texto linha por linha. É um comando freqüentemente usado no processamento de scripts. Junto com awk e grep, é chamado de Os Três Mosqueteiros do Linux. A seguir irá descrever com exemplos.
1. Gramática
sed [opções] [comando de script] [arquivo] ...
1.1 Opções comuns
-e script, --expression = script: Processa o conteúdo de entrada com o script especificado na opção;
-f script-file, --file = script-file: Processa o conteúdo de entrada com o script-file especificado na opção;
1.2 Comandos comuns
a : Novo conteúdo, adiciona o texto do conteúdo na linha especificada;
c : substitui o conteúdo, usa o texto para substituir o conteúdo da linha especificada;
d : apaga o conteúdo, apaga a linha especificada;
i : inserir conteúdo, inserir texto na linha especificada;
s : Substitua o conteúdo, você pode substituir o conteúdo especificado;
Exemplo: as primeiras 15 linhas do arquivo / 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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
1.3 Princípio de comando
O sed processa os dados de entrada linha por linha, processando uma linha de cada vez, que pode ser dividida em três etapas:
1. Armazene uma cópia da linha atualmente processada em um buffer temporário (chamado "espaço de modo");
2. Processe os dados no buffer atual por meio do comando sed;
3. Depois que os dados são processados, os dados são enviados ao terminal por padrão e, em seguida, a próxima linha é processada e todos os dados foram processados.
Os dados de origem não são modificados por padrão.
2. Exemplos
2.1 Novo conteúdo --- Comando a
sed '4a adiciona algum texto' passwd
[root@localhost ~]# sed '4a addition some text' 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
addition some text
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]#
No exemplo acima, 4a significa inserir conteúdo após a quarta linha, o texto a seguir é o conteúdo de entrada e passwd é o arquivo de entrada.
2.2 Substituir conteúdo --- comando c
sed '2c adição de algum texto' passwd
[root@localhost ~]# sed '2c addition some text' passwd
root:x:0:0:root:/root:/bin/bash
addition some text
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]#
No exemplo acima, 2c significa substituir o conteúdo da segunda linha e o conteúdo a seguir é o conteúdo a ser substituído.
2.3 Excluir conteúdo --- excluir a linha especificada
sed '2d' passwd
[root@localhost ~]# sed '2d' passwd
root:x:0:0:root:/root:/bin/bash
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]#
sed '2,5d' passwd
[root@localhost ~]# sed '2,5d' passwd
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]#
sed '/ ^ bin / d' passwd
[root@localhost ~]# sed '/^bin/d' passwd
root:x:0:0:root:/root:/bin/bash
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]#
Nos três exemplos acima, você pode excluir especificando uma linha, ou especificando um intervalo, ou especificando conteúdo específico para exclusão.
2.4 Inserir conteúdo --- comando i
sed '1i adiciona algum texto' passwd
[root@localhost ~]# sed '1i addition some text' passwd
addition some text
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost ~]#
O conteúdo inserido é diferente do conteúdo recém-adicionado. A inserção é inserida antes da linha especificada e o conteúdo recém-adicionado é inserido após a linha especificada.
2.5 Substituir conteúdo --- Comandos
sed 's / root / ROOT / g' passwd
[root@localhost ~]# sed 's/root/ROOT/g' 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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/ROOT:/sbin/nologin
[root@localhost ~]#
Nos exemplos acima, o conteúdo especificado pode ser substituído por comandos, assim como a substituição no vim.
Três, resumo
O texto acima é apenas uma lista de usos comuns do sed na forma de exemplos, há cada vez mais conteúdo aprofundado e vou apresentá-lo quando tiver tempo.