Flujo de trabajo del editor Sed, formato de comando y uso

1. Descripción general del editor sed

sed es unEditor de transmisiones, El editor de flujo editará el flujo de datos según un conjunto de reglas proporcionadas de antemano antes de que el editor procese los datos.
El editor sed puede procesar los datos en el flujo de datos de acuerdo con los comandos, que se ingresan desde la línea de comandos o se almacenan en un archivo de texto de comandos.

Dos, flujo de trabajo del editor sed

El flujo de trabajo de sed incluye principalmente tres procesos de lectura, ejecución y visualización:

  • Leer: sed lee una línea de contenido del flujo de entrada (archivo, tubería, entrada estándar) y la almacena en un búfer temporal (también conocido como espacio de patrón)
  • Ejecución: De forma predeterminada, todos los comandos sed se ejecutan secuencialmente en el espacio del patrón. A menos que se especifique la dirección de la línea, el comando sed se ejecutará secuencialmente en todas las líneas.
  • Pantalla: envíe el contenido modificado al flujo de salida. Después de enviar los datos, se borrará el espacio del patrón. Antes de que se procese todo el contenido del archivo, el proceso anterior se repetirá hasta que se procese todo el contenido.

Antes de que se procese todo el contenido del archivo, el proceso anterior se repetirá hasta que se procese todo el contenido.
Nota: De forma predeterminada, todos los comandos sed se ejecutan en el espacio del patrón, por lo que el archivo de entrada no cambiará de ninguna manera, a menos que se utilice la redirección para almacenar la salida.

Tres, formato de comando sed

3.1 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.2 Opciones comunes

-e 或--expression=:表示用指定命令来处理输入的文本文件,只有一个操作命令时可省略,一般在执行多个操作命令使用
-f 或--file=:表示用指定的脚本文件来处理输入的文本文件。
-h或--help:显示帮助。
-n、--quiet或silent:禁止sed编辑器输出,但可以与p命令一起使用完成输出。
-i:直接修改目标文本文件。(慎用,使用前最好备份)

Inserte la descripción de la imagen aquí

3.3 Operaciones comunes

s:替换,替换指定字符
d:删除,删除指定的行
a:增加,在当前行下面增加一行指定内容
i:插入,在选定行上面插入一个指定内容
c:替换,将选定行替换为指定内容
y:字符转换,转换前面的字符长度必须相同
p:打印,如果同时指定行,表示大打印指定行;如果不指定行,则表示打印内容;如果有非打印字符,则以ASCII码输出。其通常与“-n”选项一起使用
=:打印行号
I(小写L):打印数据量中的文本和不可打印的ASSCII字符(比如结束符$、制表符\t)

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Cuarto, el uso del editor sed

4.1 Usar dirección para encontrar

El editor sed tiene 2 modos de direccionamiento:

  • Representar el intervalo de filas en forma numérica
  • Usa el modo de texto para filtrar líneas
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí
    Inserte la descripción de la imagen aquí
sed -n '/user/p' /etc/passwd        #搜索配置文件/etc/passwd中包含user的内容并进行打印

Inserte la descripción de la imagen aquí

sed -n '/^a/p' /etc/passwd        #搜索配置文件/etc/passwd中以a开头的行并进行打印

Inserte la descripción de la imagen aquí

sed -n '/bash$/p' /etc/passwd        #搜索配置文件/etc/passwd中以bash结尾的行并进行打印

Inserte la descripción de la imagen aquí

sed -n '/wt\|root/p' /etc/passwd   #搜索包含wt或者root的行进行打印

Inserte la descripción de la imagen aquí

sed -n '5,/sync/p' /etc/passwd   #从第五行开始打印到包含sync的行2

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

sed -nr '/ro{1,}t/p' /etc/passwd    #搜索ro开头(ro>=1)t结尾的行并打印(-r表示支持正则表达式)

Inserte la descripción de la imagen aquí

4.2 Eliminar fila

sed 'd' 1sed.txt          #不指定行号,全部删除

Inserte la descripción de la imagen aquí

sed '4d' 1sed.txt          #删除第四行

Inserte la descripción de la imagen aquí

sed '1,3d' 1sed.txt          #删除一到三行

Inserte la descripción de la imagen aquí

sed '$d' 1sed.txt          #删除最后一行

Inserte la descripción de la imagen aquí

sed '/^$/d' 1sed.txt          #删除空行

Inserte la descripción de la imagen aquí

sed -i '/^$/d' 1sed.txt          #删除空行(加-i直接修改配置文件)

Inserte la descripción de la imagen aquí

sed 'two$/d' 1sed.txt          #删除包含two的行

Inserte la descripción de la imagen aquí

sed 'two$/!d' 1sed.txt          #删除不包含two的行

Inserte la descripción de la imagen aquí

sed '/3/,/5/d' 2sed.txt       #出现3时开始删除,出现5时结束删除

Inserte la descripción de la imagen aquí

4.3 Reemplazar

行范围 s/旧字符 /新字符 /替换标记
4种替换标记:
数字:表明新字符串将替换第几处匹配的地方
g:表明新字符将会替换所有匹配的地方
p:打印与替换命令匹配的行,与-n一起使用
w 文件:将替换的结果写到文件中
sed -n 's/root/admin/p' /etc/passwd    #将匹配行的第一个root更改为admin

Inserte la descripción de la imagen aquí

sed -n 's/root/admin/2p' /etc/passwd   #将匹配行的第二个root更改为admin

Inserte la descripción de la imagen aquí

sed '1,2 s/^/#/' 1sed.txt          #1-2行行首添加#号

Inserte la descripción de la imagen aquí

sed '/^root/  s/$/#/' /etc/passwd          #在以root开头的行,行尾添加#号

Inserte la descripción de la imagen aquí

sed -f 1sed.sh 1sed.txt      #加-f以指定的脚本文件来处理输入文件

Inserte la descripción de la imagen aquí

sed '1,3w out.txt' 1sed.txt      #将1到3行的内容保存到out.txt文件当中

Inserte la descripción de la imagen aquí

sed -n 's/\/bin\/bash/\/bin\/csh/p' /etc/passwd             #将含有/bin/bash的内容还为/bin/csh并打印
sed -n 's!/bin/bash!/bin/csh!p' /etc/passwd

Inserte la descripción de la imagen aquí

4.4 Insertar

sed '1,3a 123' 1sed.txt     #在第一行到第三行,行下插入123

Inserte la descripción de la imagen aquí

sed '1i 123' 1sed.txt    #在第一行上插入123

Inserte la descripción de la imagen aquí

sed '6r 1sed.sh' 1sed.txt          #在第六行后导入该文件内容

Inserte la descripción de la imagen aquí

sed '/one/{H;d};$G' 1sed.txt           #将包含one的行剪切到末尾,H表示复制到剪切板,G表示粘贴到指定行后

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_51613313/article/details/111942461
Recomendado
Clasificación