Fluxo de trabalho do editor sed e método de uso (atualização contínua)

One, editor sed

Sed é um editor de fluxo, o editor de fluxo irá editar o fluxo de dados com base em um conjunto de regras fornecidas com antecedência antes que o editor processe os dados.
1. O fluxo de trabalho do
editor sed O editor sed pode processar os dados no fluxo de dados de acordo com os comandos, que são inseridos na linha de comando ou armazenados em um arquivo de texto de comando. O fluxo de trabalho do sed inclui principalmente três processos de leitura, execução e exibição:

  • Ler: sed lê a partir do fluxo de entrada (arquivo, canal, entrada padrão)Uma linha de conteúdoE armazenado em um buffer temporário (também conhecido como espaço de padrão, espaço de padrão)
  • Execução: Por padrão, todos os comandos sed são executados sequencialmente no espaço do padrão. A menos que o endereço da linha seja especificado, o comando sed será executado sequencialmente em todas as linhas
  • Display: Envie o conteúdo modificado para o fluxo de saída. Depois de enviar os dados, o espaço do padrão será esvaziado. Antes de todo o conteúdo do arquivo ser processado, o processo acima será repetido até que todo o conteúdo seja processado.

Antes de todo o conteúdo do arquivo ser processado, o processo acima será repetido até que todo o conteúdo seja processado. Nota: Por padrão, todos os comandos sed são executados no espaço de modo, então o arquivo de entrada não mudará de forma alguma, a menos que a saída seja armazenada por redirecionamento

2. formato de comando sed Formato de
comando:

sed -e '格式' 文件1 文件2 ...
sed -n -e ‘操作’ 文件1 文件2 ...
sed -f 脚本文件 文件1 文件2 ...
sed -i -e '操作' 文件1 文件2 ...
sed -e ' n {
操作1
操作2
...
} ' 文件1 文件2

3. Opções comuns

  • -e ou –expression =: Significa usar o comando especificado para processar o arquivo de texto de entrada. Se houver apenas um comando de operação, ele pode ser omitido. Geralmente, ao executar vários comandos de operação, use
    == e use o "; "sinal também == Por exemplo:sed -n -e "=;p" file1等同于sed -n -e "=" -e "p" file1
  • -f ou --file =: Indica que o arquivo de script especificado é usado para processar o arquivo de texto de entrada
  • -h ou --help: mostra ajuda
  • -n, --quiet ou silent: proíbe a saída do editor sed, mas pode ser usado com o comando p para completar a saída
  • -i: modifica diretamente o arquivo de texto de destino

4. Operações comuns

  • s: Substitua, substitua o caractere especificado
  • d: excluir, excluir a linha selecionada
  • a: aumentar, adicionar uma linha de conteúdo especificado abaixo da linha atual
  • i: inserir, na linha selecionada, inserir uma linha do conteúdo especificado acima
  • c: Substituir, substituir a linha selecionada pelo conteúdo especificado
  • y: conversão de caracteres, o comprimento dos caracteres antes e depois da conversão deve ser o mesmo
  • p: Imprimir, se você especificar uma linha ao mesmo tempo, significa imprimir a linha especificada; se você não especificar uma linha, significa imprimir todo o conteúdo; se houver caracteres não imprimíveis, será enviado em código ASCII. Geralmente é usado com a opção "-n"
  • l (L minúsculo) imprime o texto no fluxo de dados e caracteres ASCII não imprimíveis (como o terminador $, o caractere de tabulação \ t)
  • = Imprimir o número da linha

Insira a descrição da imagem aqui

Dois, comandos comumente usados

(1) O editor sed tem 2 modos de endereçamento:

  • Representa o intervalo de linha em forma numérica
  • Use o modo de texto para filtrar as linhas

Saída por linha

sed -n '1p' file1         #显示第1行内容
sed -n '$p' file1         #显示最后一行内容
sed -n '1,3p' file1       #显示第1行到第3行内容
sed -n '3,$p' file1       #显示第3行到最后一行内容
sed -n '3,+3p' file1      #显示第3行加3行内容
sed -n 'p;n' file1      #显示奇数行内容
sed -n 'n;p' file1        #显示偶数行内容

Insira a descrição da imagem aqui

sed -n '1p;3p' file1       #显示第1行和第3行的内容

Insira a descrição da imagem aqui

Saída condicional

sed -n '2,${n;p}' file1       #从第二行开始,n移动下一行,p打印,表示打印奇数行 
sed -n ' /user/p' /etc/passwd    #搜索包含user的行进行打印,区分大小写 
sed -n ' /^a/p' /etc/passwd     #搜索以a开头的行进行打印 
sed -n '/bash$/p' /etc/passwd       #打印以bash结尾的行
sed -n '/ftp\|root/p' /etc/passwd   #搜索包含ftp或者root的行进行打印 
sed -n '2,/nobody/p' /etc/passwd     #从第二行开始打印到包含nobody的行
sed -nr '/ro{1,}t/p' /etc/passwd    #-r表示支持正则表达式

sed -n '2,${n;p}' file1 Começando na segunda linha, n move para a próxima linha, p imprime, o que significa imprimir linhas ímparesInsira a descrição da imagem aqui

sed -n ' /user/p' /etc/passwd Pesquisa por linhas contendo usuário para impressão, diferencia maiúsculas de minúsculas
Insira a descrição da imagem aqui

sed -n ' /^a/p' /etc/passwdProcure por linhas começando com um para imprimir
Insira a descrição da imagem aqui

sed -n '/bash$/p' /etc/passwdCorresponder as linhas que terminam em bash e saída

Insira a descrição da imagem aqui

sed -n '/ftp\|root/p' /etc/passwdProcure por linhas contendo ftp ou root e imprima
Insira a descrição da imagem aqui
sed -n '2,/nobody/p' /etc/passwdda segunda linha para a linha que não contém ninguém
Insira a descrição da imagem aqui

sed -nr '/ro{1,}t/p' /etc/passwd -r indica que as expressões regulares são suportadas
Insira a descrição da imagem aqui

(2) Excluir

sed 'd' file1               #不指定行号,全部删除
sed '3d' file1              #删除第三行 
sed '2,4d' file1            #删除2-4行
sed '$d' file1              #删除最后一行
sed '/^$/d' file1           #删除空行
sed '/nologin$/d' /etc/passwd      #删除包含nologin字符的行 
sed '/nologin$/!d' /etc/passwd     #不删除包含nologin的行
sed '/2/,/3/d' file1    #匹配到2的字段开始删除行到匹配到3的行结束
sed '/1/,/3/d' file1

sed '3d' file1 Não especifique o número da linha, exclua tudo

Insira a descrição da imagem aqui

sed '2,4d' file1 Excluir 2-4 linhas
Insira a descrição da imagem aqui

(3) Substituir

行范围 s/旧字符 /新字符 /替换标记 

4 tipos de marcas de substituição

  • Número: indica o número de correspondências que a nova string irá substituir
  • g: indica que o novo caractere substituirá todos os lugares correspondentes
  • p: imprime a linha que corresponde ao comando de substituição, usado com -n
  • w arquivo: grava o resultado da substituição no arquivo
sed -n 's/root/admin/p' /etc/passwd    #将匹配行的第一个root更改为admin
sed -n 's/root/admin/2p' /etc/passwd   #将匹配行的第二个root更改为admin
sed -n 's/root/admin/gp' /etc/passwd   #将匹配行的所有root更改为admin 
sed '1,5 s/^/#/' /etc/passwd          #1-5行行首添加#号
sed '^root/ s/$/#' /etc/passwd         #在以root开头的行,行尾添加#号
sed -f 123.sed file1                   #-f以指定的脚本文件来处理输入文件 
sed '1,5w file2.txt' /etc/passwd        #将第1到第5行保存到file2.txt
sed -n 's/bin\/bash/\/bin\/666/p' /etc/passwd   #将包含/bin/bash的行的第一个/bin/bash替换成/bin/666

(4) Inserir

sed '/5/c ABC' file1               #将含有5的行,替换为ABC
sed '1,3a ABC' file1                #在第一行到第三行,行下插入ABC
sed '1i ABC' file1                  #在第一行,行上插入ABC 
sed '5r /etc/resolv.conf' file1     #在第五行后导入该文件内容
sed '/root/{H;d};$G' /etc/passwd    #将包含root的行剪切到末尾,H表示复制到剪切板,G表示粘贴到指定行后

Acho que você gosta

Origin blog.csdn.net/weixin_53567573/article/details/114893369
Recomendado
Clasificación