Como substituir várias linhas usando o comando `sed`

How Replace Multiple Lines Using Sed Command



Às vezes, é necessário substituir várias linhas de um arquivo por qualquer caractere ou texto específico. Existem diferentes comandos no Linux para substituir várias linhas de um arquivo. O comando `sed` é um deles para fazer este tipo de tarefa. A forma completa do `sed` é o Editor do Steam, e é usado principalmente para ler e converter o texto de diferentes maneiras usando uma expressão regular. Como esse comando pode ser usado para substituir as várias linhas de um arquivo de diferentes maneiras, é explicado neste tutorial.

Folha de referências do `sed` comumente usada:

Os caracteres mais comumente usados ​​no comando `sed` são explicados na tabela a seguir.







Personagem Propósito
para É usado para anexar conteúdo.
b É usado para ramificar conteúdo.
c É usado para alterar o conteúdo.
d É usado para excluir uma linha de um arquivo.
D É usado para deletar a primeira linha de um arquivo.
g É usado para copiar do texto de exploração.
G É usado para anexar ao texto retido.
h É usado para copiar no texto retido.
H É usado para anexar ao texto retido.
eu É usado para inserção.
eu É usado para imprimir a linha substituta.
n É usado para ir para a próxima linha.
N É usado para acrescentar a próxima linha de entrada.
p É usado para imprimir.
P É usado para imprimir a primeira linha.
o que É usado para sair.
Q É usado para encerrar imediatamente.
r É usado para ler o arquivo.
R É usado para ler a linha do arquivo.
s É usado para substituir.
t É usado para testar a substituição.
T É usado para testar sem substituição.
no Ele é usado para gravar no arquivo.
NO É usado para escrever uma linha no arquivo.
x É usado para trocar padrões e manter.
e É usado para traduzir.
Com É usado para limpar a linha.
‘=’ É usado para imprimir o número da linha.

Substitua várias linhas usando o comando `sed` do terminal:

Como o comando `sed` pode ser usado para substituir as várias linhas de um arquivo do terminal é mostrado nesta parte deste tutorial. Crie um arquivo chamado sed.txt com o seguinte conteúdo teste os comandos desta parte.



sed.txt



A forma completa do sed é o editor de fluxo.





É um utilitário Unix usado para ler e converter o texto em um formato diferente.

Foi desenvolvido por Lee E. McMahon.



É usado para processamento de texto.

Suporta expressões regulares.

Exemplo-1: Substitua duas linhas consecutivas

O seguinte comando `sed` irá substituir duas linhas consecutivas por outra linha. Aqui, a opção -z é usada para substituir as linhas consecutivas com dados nulos antes de adicionar o texto de substituição. De acordo com o comando, o 3rde 4ºlinhas do arquivo serão substituídas pelo texto, ‘É uma ferramenta muito útil’ .

$gatosed.txt
$sed -Com 's / It foi desenvolvido por Lee E. McMahon. nÉ usado para texto
processamento./ É uma ferramenta muito útil./ '
sed.txt

A seguinte saída aparecerá após a execução dos comandos.

Exemplo-2: Substitua várias linhas com base na correspondência e sinalizador global

O seguinte comando `sed` irá substituir todas as linhas que começam com a palavra, 'Isto' pela palavra, ‘ Esta linha é substituída ‘.

$gatosed.txt
$sed 's / ^ It. * / Esta linha foi substituída por / g'sed.txt

A seguinte saída aparecerá após a execução dos comandos. Três linhas contêm a palavra ‘ Isto ‘No arquivo. Portanto, essas linhas foram substituídas pelo texto de substituição.

Exemplo-3: Substitua várias linhas com base no comando de correspondência e próxima linha

O seguinte comando `sed` substituirá a palavra, ' é ‘Pela palavra’ era ‘Com o comando de próxima linha,‘ n ’.

$gatosed.txt
$sed '{n; / é / {s / é / era /}}'sed.txt

A seguinte saída aparecerá após a execução dos comandos. Aqui, 'é' existe no 2WLe 4ºlinhas do arquivo, e essas linhas são modificadas pela palavra 'era' .

Substitua várias linhas criando o arquivo de script `sed`:

Nos exemplos anteriores, os comandos `sed` foram executados a partir do terminal. Mas é uma linguagem de script e, se o script contiver várias instruções, é melhor criar um arquivo sed com o script. Crie um arquivo de texto chamado students.txt com o seguinte conteúdo no qual o script `sed` será aplicado.

students.txt

ID: 111045
Nome: Robert
Departamento: CSE
Lote: 35

ID: 111876
Nome: Joseph
Departamento: BBA
Lote: 27

ID: 111346
Nome: William
Departamento: CSE
Lote: 45

ID: 111654
Nome: Charles
Departamento: EEE
Lote: 41

ID: 111346
Nome: John
Departamento: CSE
Lote: 25

ID: 111746
Nome: Thomas
Departamento: CSE
Lote: 15

Exemplo 4: Substitua várias linhas de um arquivo usando o arquivo de script `sed`

Crie um arquivo sed com o nome de substituir.sed com o seguinte conteúdo para substituir as várias linhas com base no padrão de pesquisa. Aqui, a palavra ‘ CSE 'Será pesquisado no arquivo de texto e, se a correspondência existir, ele pesquisará novamente o número 35 e 15. Se a segunda correspondência existir no arquivo, ela será substituída pelo número 45.

substituir.sed

/CSE/ {
p; n;
/35/ {
s/35/Quatro cinco/;
p; d;
}
/quinze/ {
s/quinze/55/;
p; d;
}
}
p;

Execute o seguinte comando para verificar o conteúdo existente do arquivo. ‘CSE’ apareceu quatro vezes no arquivo de texto. 35 e 15 existem em dois lugares.

$gatostudents.txt

O comando a seguir substituirá o conteúdo de várias linhas com base no script sed.

$sed -n -freplace.sed students.txt

A seguinte saída aparecerá após a execução do comando.

Conclusão

Diferentes maneiras de substituir várias linhas ou o conteúdo de várias linhas usando o comando `sed` foram mostradas neste tutorial. Como o script `sed` pode ser executado a partir de um arquivo sed também é mostrado neste tutorial. Espero que este tutorial ajude o leitor a substituir várias linhas de qualquer arquivo usando o comando `sed`.