15 consejos y trucos de comando 'sed' útiles para tareas diarias de administración del sistema Linux

15 consejos y trucos de comando 'sed' útiles para tareas diarias de administración del sistema Linux

Cada administrador del sistema tiene que lidiar con archivos de texto sin formato diariamente. Saber cómo ver ciertas secciones, cómo reemplazar las palabras y cómo filtrar el contenido de esos archivos son habilidades que debe tener a mano sin tener que hacer una búsqueda en Google.

15 consejos y trucos de comando 'sed' útiles para Linux

En este artículo revisaremos SED, el conocido editor de transmisión y compartiremos 15 consejos para usarlo para lograr los objetivos mencionados anteriormente, y más.

1. Ver una variedad de líneas de un documento

Herramientas como la cabeza y la cola nos permiten ver la parte inferior o la parte superior de un archivo. ¿Qué pasa si necesitamos ver una sección en el medio?? La siguiente línea SED One-Liner devolverá las líneas 5 a través de 10 de mi archivo.TXT:

# sed -n '5,10p' myfile.TXT 

2. Ver todo el archivo excepto un rango dado

Por otro lado, es posible que desee imprimir todo el archivo, excepto un cierto rango. Para excluir líneas 20 a través de 35 de mi archivo.TXT, hacer:

# sed '20, 35d 'myfile.TXT 

3. Ver líneas y rangos no consecutivos

Es posible que esté interesado en un conjunto de líneas no consecutivas, o en más de un rango. Vamos a mostrar líneas 5-7 y 10-13 de mi archivo.TXT:

# sed -n -e '5,7p' -e '10, 13p 'myfile.TXT 

Como puedes ver, el -mi La opción nos permite ejecutar una acción dada (en este caso, líneas de impresión) para cada rango.

4. Reemplazo de palabras o caracteres (sustitución básica)

Para reemplazar cada instancia de la palabra versión con historia en mi archivo.TXT, hacer:

# sed 's/versión/story/g' myfile.TXT 

Además, es posible que desee considerar usar soldado americano en lugar de gramo Para ignorar el caso del personaje:

# sed 's/versión/story/gi' myfile.TXT 

Para reemplazar múltiples espacios en blanco con un solo espacio, utilizaremos la salida de show de ruta IP y una tubería:

# show de ruta IP | sed 's/ *// g' 

Comparar la salida de show de ruta IP con y sin la tubería:

Reemplazar palabras o caracteres en el archivo

5. Reemplazar palabras o personajes dentro de una gama

Si está interesado en reemplazar las palabras solo dentro de un rango de línea (30 a través de 40, Por ejemplo), puede hacer:

# sed '30, 40 s/versión/story/g 'myfile.TXT 

Por supuesto, puede indicar una sola línea a través de su número correspondiente en lugar de un rango.

6. Uso de expresiones regulares (sustitución avanzada) - I

A veces los archivos de configuración se cargan con comentarios. Si bien esto es ciertamente útil, puede ser útil mostrar solo las directivas de configuración a veces si desea verlas todas de un vistazo.

Para eliminar líneas vacías o aquellos que comienzan con # Desde el archivo de configuración de Apache, haga:

# sed '/^# \ |^$ \ | *#/d 'httpd.confusión 

El letrero de careto seguido de la señal de número (^#) indica el comienzo de una línea, mientras que ^$ representa líneas en blanco. Las barras verticales indican operaciones booleanas, mientras que el corte hacia atrás se usa para escapar de las barras verticales.

En este caso particular, el archivo de configuración de Apache tiene líneas con #'s no al comienzo de algunas líneas, así que *# se usa para eliminarlos también.

7. Uso de expresiones regulares (sustitución avanzada) - II

Para reemplazar una palabra que comienza con mayúsculas o minúsculas con otra palabra, también podemos usar SED. Para ilustrar, reemplazemos la palabra cremallera o Cremallera con rar en mi archivo.TXT:

# sed 's/[zz] ip/rar/g' myfile.TXT 

No te pierdas: Use AWK con expresiones regulares para filtrar texto en archivos

8. Ver líneas que contienen con un patrón dado

Otro uso de sed consiste en imprimir las líneas desde un archivo que coincida con una expresión regular dada. Por ejemplo, podemos estar interesados ​​en ver las actividades de autorización y autenticación que tuvieron lugar en 2 de julio, Según el /var/log/seguro Iniciar sesión en un Centos 7 servidor.

En este caso, el patrón para buscar es 2 de julio Al comienzo de cada línea:

# sed -n '/^jul 1/p'/var/log/seguro 
Ver registros (líneas) de fecha particular

9. Insertar espacios en archivos

Con sed, También podemos insertar espacios (líneas en blanco) para cada línea no vacía en un archivo. Para insertar una línea en blanco cualquier otra línea en LICENCIA, un archivo de texto sin formato, hacer:

# sed g myfile.TXT 

Para insertar dos líneas en blanco, haga:

# sed 'g; g' myfile.TXT 

Agregar un mayúsculas separado por un punto y coma si desea agregar más líneas en blanco. La siguiente imagen ilustra el ejemplo descrito en este consejo:

Insertar espacios en el archivo

Este consejo puede ser útil si desea inspeccionar un archivo de configuración grande. Insertar un espacio en blanco, cualquier otra línea y la salida de la salida a menos dará como resultado una experiencia de lectura más amigable.

10. Emular Dos2unix con edición en línea

El dos2unix El programa convierte archivos de texto sin formato de Windows/Mac a UNIX/Linux, eliminando los caracteres ocultos de Newline insertados por algunos editores de texto utilizados en esas plataformas. Si no está instalado en su sistema Linux, puede imitar su funcionalidad con sed En lugar de instalarlo.

En la imagen a la izquierda podemos ver varios personajes de DOS Newline (^M), que luego fueron eliminados con:

# sed -i 's/\ r //' myfile.TXT 
Archivos de texto encubiertos de Windows a Linux

Tenga en cuenta que el -i opción indicar edición en el lugar. Entonces los cambios no se devolverán a la pantalla, sino que se guardarán en el archivo.

Nota: Puede insertar caracteres DOS Newline mientras edita un archivo en Vim Editor con CTRL+V y CTRL+M.

11. Edición en el lugar y respaldo del archivo original

En el consejo anterior usamos sed para modificar un archivo pero no guardó el archivo original. A veces es una buena idea guardar una copia de copia de seguridad del archivo original por si acaso.

Para hacer eso, indique un sufijo después del -i Opción (dentro de cotizaciones individuales) para cambiar el nombre del archivo original.

En el siguiente ejemplo reemplazaremos todas las instancias de este o Este (ignorando el caso) con eso en mi archivo.TXT, y guardaremos el archivo original como mi archivo.TXT.oriente.

Finalmente, utilizaremos DIFF Utility para identificar las diferencias entre ambos archivos:

# sed -i '.orig "s/this/that/gi 'myfile.TXT 
Use SED para editar y hacer una copia de seguridad del archivo original

12. Cambiar pares de palabras

Supongamos que tiene un archivo que contiene nombres completos en el formato Nombre de pila, Apellido. Para procesar adecuadamente el archivo, es posible que desee cambiar Apellido y Nombre de pila.

Podemos hacer eso con sed bastante fácil:

# Sed 's/^\ (.*\), \ (.*\) $ /\, /g 'nombres.TXT 
Cambiar palabras en el archivo

En la imagen de arriba podemos ver que los paréntesis, siendo caracteres especiales, necesitan ser escapados, al igual que los números 1 y 2.

Estos números representan las expresiones regulares resaltadas (que deben aparecer dentro de los paréntesis):

  1. 1 representa el comienzo de cada línea hasta la coma.
  2. 2 es un marcador de posición de todo lo que es correcto de la coma hasta el final de la línea.

La salida deseada se indica en el formato Segunda columna (Apellido) + coma + espacio + Primera columna (Nombre de pila). Siéntete libre de cambiarlo a lo que desees.

13. Reemplazar palabras solo si se encuentra una coincidencia separada

A veces, reemplazar todas las instancias de una palabra dada, o unos pocos aleatorios, no es precisamente lo que necesitamos. Quizás necesitemos realizar el reemplazo si se encuentra una coincidencia separada.

Por ejemplo, es posible que deseemos reemplazar comenzar con detener Solo si la palabra servicios se encuentra en la misma línea. En ese escenario, esto es lo que sucederá:

Necesitamos comenzar a festejar en el trabajo, pero recordemos iniciar todos los servicios primero. 

En la primera línea, comenzar no será reemplazado con detener Dado que la palabra servicios no aparece en esa línea, a diferencia de la segunda línea.

# Sed '/Services/S/Start/Stop/G' Msg.TXT 
Reemplazar palabras en el archivo

14. Realizar dos o más sustituciones a la vez

Puede combinar dos o más sustituciones un solo sed dominio. Reemplacemos las palabras que y línea mi archivo.TXT con esto y verso, respectivamente.

Tenga en cuenta cómo se puede hacer esto utilizando un ordinario sed Comando de sustitución seguido de un comando de semicolon y un segundo comando de sustitución:

# sed -i 's/that/this/gi; s/line/verse/gi' myfile.TXT 

Este consejo se ilustra en la siguiente imagen:

Reemplazar múltiples palabras en el archivo

15. Combinando SED y otros comandos

Por supuesto, sed se puede combinar con otras herramientas para crear comandos más potentes. Por ejemplo, usemos el ejemplo dado en Consejo #4 y extrae nuestra dirección IP de la salida del ruta IP dominio.

Comenzaremos imprimiendo solo la línea donde la palabra SRC es. Luego convertiremos múltiples espacios en uno solo. Finalmente, cortaremos el Noveno campo (considerando un solo espacio como separador de campo), que es donde la dirección IP es:

# show de ruta IP | sed -n '/src/p' | sed -e 's/ *// g' | cortar -d "-f9 

La imagen a continuación ilustra cada paso del comando de arriba:

Combinar sed con otros comandos

Resumen

En esta guía hemos compartido 15 consejos y trucos SED Para ayudarlo con las tareas de administración diaria del sistema. ¿Hay algún otro consejo que use regularmente y le gustaría compartir con nosotros y con el resto de la comunidad??

Si es así, siéntase libre de informarnos usando el formulario de comentarios a continuación. Las preguntas y los comentarios también son bienvenidos: esperamos tener noticias suyas!

No te pierdas: Dominar el comando de Linux 'AWK' con consejos y trucos