Linux (editor de texto sed)

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

Supongo que te gusta

Origin blog.csdn.net/ZZZ_CCC01/article/details/131941549
Recomendado
Clasificación