sed
Similar a vim, es un editor de texto, pero sed se edita y procesa por línea
Función principal: agregar, eliminar, modificar y verificar el contenido del texto, la más poderosa es la operación de modificación
Nota: Se pueden admitir expresiones regulares y también se pueden admitir expresiones regulares extendidas, pero no se depende completamente de las expresiones regulares.
como funciona sed
Incluye tres procesos: leer-ejecutar-mostrar
Leer: después de leer el contenido del texto, el contenido leído se almacenará en un búfer temporal (espacio de patrón)
Ejecución: en el espacio del patrón, ejecute línea por línea de acuerdo con el contenido del texto leído y recorra todas las líneas a menos que se especifique el número de línea. Ejecutar secuencialmente, de arriba a abajo.
Pantalla: una vez completada la ejecución, imprima el resultado de la ejecución. Si el cambio debe surtir efecto, el contenido modificado del espacio del patrón se escribirá en el archivo especificado. Si solo la operación, pero
Al final, el archivo no se escribirá y solo se mostrará el resultado. Una vez completada la visualización, los datos en el espacio del patrón se eliminarán inmediatamente.
formato sed y opciones comunes
sed -e 'operador' archivo1 -e 'operador' archivo2
No agregue -e cuando solo opere en un archivo
Opciones comunes:
-e: opción de acción condicional
-f: especifica el archivo de secuencia de comandos para procesar el contenido del archivo de entrada. Escriba los comandos en el script y utilícelos para procesar el contenido del segundo archivo.
-i: ¡Úselo con precaución inmediatamente! !
-n: muestra el resultado después del procesamiento del script (la salida predeterminada de sed está prohibida)
Operador: es necesario utilizar comillas simples ''
s: reemplaza el carácter especificado
d: eliminar, eliminar la línea especificada
a: aumentar, insertar el contenido especificado debajo de la línea actual
i: aumentar, insertar el contenido especificado encima de la línea especificada
c: reemplazar, reemplazar toda la línea
y: reemplazar, reemplazar caracteres, pero la longitud de los caracteres antes y después del reemplazo debe ser la misma.
p: imprimir (sed tiene salida por defecto)
r: usar regularización extendida
La operación de sed.
función de verificación sed
sed imprime la línea especificada, direccionando impresiones
sed -n '4p' nombre de archivo # imprime la cuarta línea
sed -n '$p' nombre de archivo #imprime la última línea directamente
Método 2: imprima el intervalo de rango del número de línea
sed -n '1,3p' nombre de archivo #imprime la primera línea en la tercera línea
sed -n '2,$p' nombre de archivo # imprime desde la segunda línea hasta la última línea
sed -n '2p;$p' nombre de archivo: imprime desde la segunda línea hasta la última línea
El rango de números de línea imprime: , a ; y
Imprime líneas pares e impares:
sed -n 'n;p' nombre de archivo (n es omitir la primera línea y n es omitir la segunda línea)
Modo de filtro de texto:
Primero: imprima el contenido que contiene la cadena especificada:
sed -n '/o/p' nombre de archivo
sed -n '/big/p' nombre de archivo #Se imprimirán todas las líneas que contengan big
Aplique expresiones regulares básicas para imprimir:
sed -n '/^root/p' /etc/passwd #imprime la línea que comienza con root
sed -n '/bash$/p' /etc/passwd #imprime la línea que termina en bash
eliminar sed
Especifique el número de línea a eliminar:
sed -n '3d;p'filename#Elimine el contenido de la tercera línea e imprima el contenido restante.
sed -n '1d;3d;p' nombre de archivo #Elimine el contenido de la primera y tercera línea e imprima el contenido restante.
sed -n '1d, 3d;p' nombre de archivo #Elimine el contenido de la primera línea a la tercera línea e imprima el contenido restante.
(, significa a; significa y)
sed '/big/d' nombre de archivo # contenido de cadena coincidente (grande) a eliminar
sed'/o/! d' nombre de archivo # coincide con el contenido de la cadena (o), elimina todo excepto o
Utilice expresiones regulares para eliminar:
sed '/^$/d' nombre de archivo #eliminar líneas en blanco
Reemplazo de sed (¡énfasis!!)
s Cuerda de repuesto:
sed -n 's/root/test/p' /etc/passwd #Reemplazar la primera raíz de la línea actual con test
sed -n 's/root/test/gp' /etc/passwd #Reemplazar todas las raíces en la línea actual con test
Caso de caracteres alfabéticos para sustitución:
l&: un símbolo especial convertido a minúsculas y se requiere un carácter de escape cuando se vuelve a utilizar.
u&: símbolo especial convertido en tamaño; cuando se usa, se requiere carácter de escape
g: reemplaza todo, si no se agrega, reemplaza solo la primera letra
sed 's/[az]/\u&/' 123.txt
c para reemplazar toda la línea:
sed '/línea a reemplazar/c contenido a reemplazar' nombre de archivo
y reemplazo de un solo carácter:
sed 'y/'
La adición de sed
a Agregar en la siguiente línea: sed '/línea especificada/un nombre de archivo de contenido agregado'
Agrego en la línea anterior: sed '/línea especificada/agregué contenido' nombre de archivo
r lee el contenido del archivo especificado en el número de línea (agregar después de la línea):
sed '/Bajo la línea actual del archivo original/r El archivo para leer el contenido' especifica el archivo para la operación
Ver registros dentro de un tiempo específico:
sed -n '/20 de julio 18:36:12/,/20 de julio 18:50:01/p' /var/log/messages
preguntas de entrevista
1. ¿Qué debo hacer si el archivo es demasiado grande?
Método 1: dividir -l cortar por línea para procesar (adecuado para archivos grandes)
Método 2: nombre de archivo cat | procesamiento sed (para archivos de tamaño mediano)
2. Cómo eliminar el contenido del archivo sin ingresar al archivo (es decir, eliminar sin interacción)
Método 1: sed -i 'd' nombre de archivo
Método 2: cat /dev/null > nombre de archivo