15 útiles consejos y trucos de comandos’ sed ‘ 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 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 Útil ‘sed’ Comando Consejos y Trucos para Linux

En este artículo vamos a revisar sed, el conocido editor de flujo, y compartir 15 consejos para utilizarlo con el fin de lograr los objetivos mencionados anteriormente, y más.

visualización de un rango de líneas de un documento

herramientas como head y tail nos permiten ver la parte inferior o superior de un archivo. ¿Qué pasa si necesitamos ver una sección EN EL MEDIO? El siguiente sed one-liner devolverá las líneas 5 a 10 desde myfile.,txt:

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

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 las líneas 20 a 35 de miarchivo.txt, do:

# sed '20,35d' myfile.txt

visualización de 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 las líneas 5-7 y 10-13 de myfile.,txt:

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

Como puede ver, el -e opción nos permite ejecutar una acción determinada (en este caso, imprimir líneas) de cada rango.

reemplazar palabras o caracteres (sustitución básica)

para reemplazar cada instancia de la palabra version con story en mi archivo.,de ip route show y una tubería:

# ip route show | sed 's/ */ /g'

Compare la salida de ip route show con y sin la tubería:

reemplazar palabras o caracteres en el archivo

reemplazar palabras o caracteres dentro de un rango

si está interesado en reemplazar palabras solo dentro de un rango de línea (30 a 40, por ejemplo), puede hacer:

# sed '30,40 s/version/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.,

usando 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 las líneas vacías o las que comienzan con # del archivo de configuración de Apache, haga:

# sed '/^#\|^$\| *#/d' httpd.conf

el signo de careta seguido del signo 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 la barra inclinada hacia atrás se utiliza para escapar de las barras verticales.

en este caso particular, el archivo de configuración de Apache tiene líneas con #’s no al principio de algunas líneas, por lo que *# también se usa para eliminarlas.

usando 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,vamos a reemplazar la palabra zip o Zip con rar en mi archivo.,txt:

# sed 's/ip/rar/g' myfile.txt

no te pierdas: usa Awk con expresiones regulares para filtrar texto en archivos

viendo líneas que contienen con un patrón dado

otro uso de sed consiste en imprimir las líneas de un archivo que coinciden con una expresión regular dada. Por ejemplo, podemos estar interesados en ver las actividades de autorización y autenticación que tuvieron lugar el 2 de julio, según el /var/log/secure log en un servidor CentOS 7.,

En este caso, el patrón de búsqueda es Jul 2 al comienzo de cada línea:

# sed -n '/^Jul 1/ p' /var/log/secure
Ver los Registros (Líneas) de Particular Fecha

Insertar espacios en los 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 cada otra línea en la Licencia, un archivo de texto sin formato, haga:

# sed G myfile.txt

para insertar dos líneas en blanco, haga:

# sed 'G;G' myfile.txt

agregue una G mayúscula separada por un punto y coma si desea agregar más líneas en blanco. La siguiente imagen ilustra el ejemplo descrito en punta del este:

Insertar Espacios en el Archivo

Este consejo puede ser útil si usted desea inspeccionar un gran archivo de configuración., Insertar un espacio en blanco cada otra línea y canalizar la salida a menos resultará en una experiencia de lectura más amigable.

emulando dos2unix con edición en línea

el programa dos2unix convierte archivos de texto sin formato de Windows / Mac a Unix / Linux, eliminando los caracteres de nueva línea ocultos 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 de la izquierda podemos ver varios caracteres de nueva línea de DOS (^M), que luego se eliminaron con:

# sed -i 's/\r//' myfile.txt
archivos de Windows a Linux

tenga en cuenta que la opción -i indica la edición en el lugar. A continuación, los cambios no se devolverán a la pantalla, sino que se guardarán en el archivo.,

Nota: Puede insertar caracteres de nueva línea de DOS mientras edita un archivo en el editor vim con Ctrl+Vy Ctrl+M.

edición in situ y copia de seguridad del archivo original

en el consejo anterior utilizamos sed para modificar un archivo, pero no guardamos el archivo original. A veces es una buena idea guardar una copia de seguridad del archivo original por si acaso.

para hacer eso, indique un sufijo después de la opción -i (dentro de comillas simples) que se utilizará para cambiar el nombre del archivo original.,

en el siguiente ejemplo reemplazaremos todas las instancias de this o This (ignorando mayúsculas y minúsculas) con that en myfile.txt, y guardaremos el archivo original como myfile.txt.orig.

finalmente, usaremos la utilidad diff para identificar las diferencias entre ambos archivos:

# sed -i'.orig' 's/this/that/gi' myfile.txt
Use sed para editar y respaldar el archivo Original

cambiar pares de palabras

supongamos que tiene un archivo que contiene los nombres completos en el formato nombre, apellido., Para procesar adecuadamente el archivo, es posible que desee cambiar el apellido y el nombre.

Podemos hacer eso con sed bastante fácilmente:

# sed 's/^\(.*\),\(.*\)$/\, /g' names.txt
cambiar palabras en el archivo

en la imagen de arriba podemos ver que los paréntesis, al ser 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 entre paréntesis):

  1. 1 representa el comienzo de cada línea hasta la coma.,
  2. 2 es un marcador de posición para todo lo que está a la derecha de la coma Hasta el final de la línea.

la salida deseada se indica en el formato SecondColumn (apellido) + coma + espacio + FirstColumn (nombre). Siéntase libre de cambiarlo a lo que desee.

reemplazar palabras solo si se encuentra una coincidencia separada

a veces reemplazar todas las instancias de una palabra dada, o unas pocas al azar, no es precisamente lo que necesitamos. Tal vez necesitamos realizar el reemplazo si se encuentra una coincidencia separada.,

por ejemplo, es posible que deseemos reemplazar start por stop solo si la palabra services se encuentra en la misma línea. En ese escenario, esto es lo que sucederá:

We need to start partying at work,but let’s remember to start all services first.

en la primera línea, start no se reemplazará con stop ya que la palabra services 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

realizar dos o más sustituciones a la vez

puede combinar dos o más sustituciones en un solo comando sed. Vamos a reemplazar las palabras that Y line en myfile.txt con esto y verso, respectivamente.,

tenga en cuenta cómo esto se puede hacer utilizando un comando de sustitución de sed ordinario seguido de un punto y coma 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 varias palabras en archivo

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 TIP # 4 y extraigamos nuestra dirección IP de la salida del comando ip route.

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

# ip route show | sed -n '/src/p' | sed -e 's/ */ /g' | cut -d' ' -f9

la imagen a continuación ilustra cada paso del comando anterior:

Combine sed con otros comandos

resumen

en esta guía hemos compartido 15 consejos y trucos de Sed para ayudarlo con sus tareas diarias de administración del sistema. ¿Hay algún otro consejo que uses regularmente y que te gustaría compartir con nosotros y el resto de la comunidad?,

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *