Tabla de contenido
2.1 Salida de texto calificado (p significa salida normal)
2.2, sed combinado con expresiones regulares para generar la línea especificada
2.3 Eliminar el texto que cumple las condiciones
2.4 Insertar filas calificadas
3. Sustituye el texto que cumpla las condiciones
3.2, primero haga una copia de seguridad y luego modifique los datos
5. Edite archivos usando scripts
sed es una poderosa y simple herramienta de análisis y conversión de archivos que puede leer texto, editar el contenido del texto de acuerdo con condiciones específicas (eliminar, reemplazar, agregar, mover, etc.) y finalmente procesar todas las líneas o solo algunas líneas. sed también puede implementar operaciones de procesamiento de texto bastante complejas sin interacción
1. Uso común del comando sed
Por lo general, existen dos formatos para invocar el comando sed, como se muestra a continuación. Entre ellos, "parámetro" se refiere al archivo de destino de la operación, que se usa cuando hay múltiples objetos de operación, y los archivos están separados por comas ","; y scriptfile indica el archivo de script, que debe especificarse con el Opción -f, que indica que se utiliza el archivo de script especificado Procesar el archivo de objeto de entrada.
sed [opciones] argumento 'acción'
sed [opciones] -f argumento del archivo de script
opciones
常见的sed命令选项包含以下几种:
-e或-expression=:表示用指定命令或者脚本来处理输入的文本文件
-f或-file-:表示用指定的脚本文件来处理输入的文件文件
-h或--help:显示帮助
-n、-quite或silent:表示仅表示处理后的结果
-i:直接编辑文本文件
funcionar
"Operación" se usa solo para acciones que operan en archivos, es decir, comandos sed. Por lo general, esto tiene la forma de parámetros de acción "[n1[n2]]". n1 y n2 son opcionales y representan el número de filas seleccionadas para la operación.Si la operación debe realizarse entre 5 y 20 filas, se expresa como "5, 20 comportamientos de acción". Las operaciones comunes incluyen lo siguiente.
a:增加,在当前行下面增加一行指定内容。
c:替换,讲选定行替换为指定内容。
d:删除,删除选定的行。
i:插入,在选定行上面插入一行指定内容。
p:打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容,如果又非打印字符,则以ASCLL码输出。通常与“-n”选项一起使用。
s:替换,替换指定字符
y:字符转换
2. Ejemplo de uso
Copiamos un archivo de tarjeta de red y lo usamos para demostración
2.1 Salida de texto calificado (p significa salida normal)
sed -n '3p' ens33 #muestra el contenido de la tercera línea
sed -n '3,5p' ens33 #salida 3-5 líneas de contenido
sed -n '3p;5p' ens33 #salida de la tercera y quinta líneas
sed -n 'p;n' ens33 #salir todas las líneas impares sed -n '1~2p' ens33 también se puede lograr
sed -n 'n;p' ens33 #salir todas las líneas pares sed -n '2~2p' ens33 también se puede lograr
sed -n '1,5{p;n}' ens33 #Salida de líneas impares de 1-5 líneas
sed -n '1,5{1~2p}' ens33 #Salida 1-5 líneas impares
sed -n '1,5{2~2p}' ens33 #Produce las líneas pares de 1-5
sed -n '7,${n;p}' ens33 #Salida de líneas pares después de 7 líneas
sed -n '3,+5p' ens33 #Empezar desde la línea 3, salida continua, es decir, salida del contenido de las líneas 3-8
2.2, sed combinado con expresiones regulares para generar la línea especificada
El comando sed tiene un formato ligeramente diferente cuando se combina con una expresión regular, y la expresión regular está rodeada por "/".
Nota : si se encuentran símbolos especiales, la expresión regular extendida también debe escapar del carácter "\".
preparar un archivo de texto
sed -n '/the/p' test.txt #muestra la línea que contiene el
sed -n '4,/the/p' test.txt #muestra la línea que contiene el comienzo de la cuarta línea
sed -n '/the/=' test.txt #Ingresa el número de línea de la línea que contiene el, usa (=) para generar el número de línea
sed -n '/^PI/p' test.txt #Produce las líneas que comienzan con PI
sed -n '/[0-9]$/p' test.txt #líneas de salida que terminan con números 0-9
Nota: Al mirar con qué termina, preste atención al carácter nulo final
sed -n '/\<madera\>/p' test.txt #Produce la línea que contiene la palabra madera, \< \> representa el límite de la palabra
2.3 Eliminar el texto que cumple las condiciones
Todavía use el archivo test.txt anterior, pero necesitamos hacer una copia de seguridad para la recuperación después de la eliminación
En los siguientes comandos, el comando nl se usa para contar el número de líneas en el archivo. Combinando este comando, puede ver los resultados de la ejecución del comando de manera más intuitiva. También podemos usar -i o ninguna opción para mostrar, pero la diferencia es que -i opera directamente sobre el texto, y sin parámetros solo muestra el resultado y no opera sobre el texto.
nl prueba.txt | sed '3d' o sed '3d' prueba.txt o sed -i '3d' prueba.txt
#-modificaré el texto directamente
#borrar la tercera linea
Para una mejor visualización, use nl
nl test.txt | sed '3,5d' #Eliminar 3-5 líneas
nl test.txt | sed '/the/d' #Eliminar la línea con el carácter, con el símbolo ! significa negación, es decir, eliminar la línea sin el
Operación de negación con "!"
sed '/^[az]/d' test.txt #Eliminar líneas que comienzan con az
sed '/\.$/d' test.txt #Eliminar líneas que terminan en .
sed '/^$/d' test.txt #eliminar líneas en blanco
Nota: Si desea eliminar líneas en blanco repetidas, es decir, mantener solo una línea en blanco continua, ejecute el comando "sed -e '/^$/{n;/^$/d}' test.txt" para lograrlo . Su efecto es el mismo que "cat -s test.txt", n significa leer la siguiente línea de datos.
2.4 Insertar filas calificadas
sed '3i quién soy' test.txt #Agregue quién soy en la línea anterior de la tercera línea
sed '/el/yo quien soy' test.txt #Agregue quien soy en la línea arriba de la línea que contiene el
sed '/the/a who am I' test.txt #Add who am I en la siguiente línea de la línea que contiene el
sed '3c ##########' test.txt #Reemplace la tercera línea con ##########
3. Sustituye el texto que cumpla las condiciones
3.1, reemplazo de cadena
sed 's/the/THE' test.txt #Reemplace el primero en cada línea con THE
sed 's/l/L/2' #Reemplazar el segundo l de cada línea con L
sed 's/l/L/g' test.txt #Reemplazar todos los l en el archivo con L
sed 's/o/ /g' test.txt #Reemplazar todo o con caracteres vacíos
sed 's/^/#/' test.txt #Añadir # delante de todas las líneas
sed '/the/s/^/#/' test.txt #Agregue un # delante de la línea que contiene el
sed '3, 5s/the/THE/g' test.txt #Reemplazar las líneas 3-5 con THE
sed '/the/s/o/O/g' text.txt #Reemplace la o en la línea que contiene con O
3.2, primero haga una copia de seguridad y luego modifique los datos
sed -i.bak 's/SELINUX=deshabilitar/SELINUX=reforzar/' /etc/selinux/config
4. Migrar texto calificado
Parámetros para migrar texto
H:复制到剪贴板;
g、G:将剪贴板中的数据覆盖/追加至指定行;
w:保存为文件;
r:读取指定文件;
a:追加指定内容。具体操作方法如下所示。
I,i 忽略大小写
sed '/the/{H;d};$G' test.txt #La línea que contiene las migraciones al final del archivo, {;} se usa para múltiples operaciones
sed '1,5/{H;d};14G' test.txt #Anexar 1-5 líneas a 14 líneas
sed '/the/w out.file' text.txt #Guardar la línea que contiene como archivo out.file
sed '/the/r /etc/hostname' text.txt #Agregue el contenido del archivo /etc/hostname a cada línea que contenga el
sed '3a #####' text.txt #Insertar una nueva línea después de la tercera línea, el contenido es ##### Si es el parámetro i, está en la tercera línea
sed '/the/a #####' text.txt #Insertar una nueva línea después de cada línea que contiene, el contenido es Nuevo
sed '3a #####\n ######' text.txt //Insertar varias líneas de contenido después de la tercera línea, el medio \n significa nueva línea
5. Edite archivos usando scripts
Use el script sed para almacenar varias instrucciones de edición en un archivo (una instrucción de edición por línea) y llámelo con la opción "-f".
Por ejemplo, ejecute el siguiente comando para transferir el contenido de las líneas 1~5 a la línea 14, que es equivalente a sed '1,5{H;d};14G' text.txt
Nota: Además de ver el número fijo de líneas, puede editar el texto agregando la opción "-i" a todas las demás operaciones. De lo contrario, solo podrá ver los resultados después de la operación y no podrá modificar el texto directamente. .
Por ejemplo, la modificación del contenido del texto anterior
Veamos el contenido después de terminar la operación.
es constante
añadimos -i
sed -f sed.sh -i prueba.txt
Resumir
Sed es un comando de edición de texto muy útil, que permite a los usuarios editar texto sin interacción al escribir scripts de shell, lo que reduce en gran medida la cantidad de operaciones humanas. necesito estudiar mucho