LFCS: Cómo usar el comando GNU ‘sed’ para crear, editar y manipular archivos en Linux-Parte 1

LFCS: Cómo usar el comando GNU ‘sed’ para crear, editar y manipular archivos en Linux-Parte 1

La Linux Foundation anunció la certificación LFCS. ( Linux Foundation Certified Sysadmin. , un nuevo programa que tiene como objetivo ayudar a las personas de todo el mundo a obtener la certificación de básico a intermedio. Tareas de administración del sistema para sistemas Linux. Esto incluye el soporte de sistemas y servicios en ejecución, junto con la resolución de problemas y el análisis de primera mano, y la toma de decisiones inteligente para escalar los problemas a los equipos de ingeniería.

 Linux Foundation Certified Sysadmin  Administrador de sistemas certificado por Linux Foundation Administrador de sistemas certificado por la Fundación Linux-Parte 1

Por favor, mire el siguiente video que muestra sobre el Programa de certificación de la Fundación Linux.

La serie se llamará Preparación para el LFCS. ( Administrador de sistemas certificado por Linux Foundation. Partes 1. a 10. y cubierta t Los siguientes temas para Ubuntu, CentOS y openSUSE:

Parte 1 : Cómo usar el comando GNU ‘sed’ para crear, editar y manipular archivos en Linux Parte 2 : Cómo instalar y usar vi/m como un editor de texto completo Parte 3 : Archivar archivos/directorios y buscar archivos en el sistema de archivos Parte 4 : Partición de dispositivos de almacenamiento, formateo de sistemas de archivos y configuración de partición de intercambio Parte 5 : Montar/desmontar sistemas de archivos locales y de red (Samba y NFS) en Linux Parte 6 : Ensamblar particiones como Dispositivos RAID: creación y administración de copias de seguridad del sistema Parte 7 : Administración del proceso y servicios de inicio del sistema (SysVinit, Systemd y Upstart Parte 8 : Administración de usuarios y grupos, permisos y atributos de archivos y Habilitación del acceso a sudo en cuentas Parte 9 : Administración de paquetes de Linux con Yum, RPM, Apt, Dpkg, Aptitude y Zypper Parte 10 : Aprendizaje de scripts de shell básicos y solución de problemas del sistema de archivos

Importante. debido a los cambios en los requisitos de certificación de LFCS a partir del 2 de febrero de 2016. estamos incluyendo los siguientes temas necesarios para la serie LFCS publicada aquí. Para prepararse para este examen, le recomendamos que utilice también la serie LFCE.

Parte 11 : Cómo administrar y Cree LVM usando los comandos vgcreate, lvcreate y lvextend Parte 12 : Cómo explorar Linux con herramientas y documentación de ayuda instaladas Parte 13 : Cómo configurar y solucionar problemas de Grand Unified Bootloader (GRUB) Parte 14 : Monitorear el uso de recursos de los procesos de Linux y establecer límites de proceso por usuario Parte 15 : Cómo configurar o modificar los parámetros de tiempo de ejecución del kernel en sistemas Linux Parte 16 : Cómo configurar listas de control de acceso (ACL) y cuotas de disco para usuarios y grupos Parte 17 : Cómo instalar Cygwin, un entorno de línea de comandos similar a Linux para Windows Parte 18 : una guía definitiva para Configuración del servidor FTP para permitir inicios de sesión anónimos Parte 19 : Configurar un servidor DNS de almacenamiento en caché recursivo básico y configurar zonas para el dominio Parte 20 : Implementación del control de acceso obligatorio con SELinux o AppArmor en Linux

Esta publicación es la parte 1. de una serie de 20 tutoriales. que cubrirá los dominios necesarios y las competencias que se requieren para el LFCS. examen de certificacion. Dicho esto, encienda su terminal y comencemos.

Procesamiento de secuencias de texto en Linux

Linux trata la entrada y la salida de los programas como secuencias (o secuencias) de caracteres . Para comenzar a comprender la redirección y las canalizaciones, primero debemos comprender los tres tipos más importantes de flujos de E/S (entrada y salida), que de hecho son archivos especiales (por convención en UNIX y Linux, flujos de datos y periféricos, o archivos de dispositivo, también se tratan como archivos ordinarios).

freestar.config.enabled_slots.push

La diferencia entre > ( operador de redirección) y | (operador de canalización) es que mientras el primero conecta un comando con un archivo, el segundo conecta la salida de un comando con otro comando.

# comando> archivo # comando1 | command2

Dado que el operador de redirección crea o sobrescribe archivos silenciosamente, debemos usarlo con extrema precaución y nunca confundirlo con una canalización. Una ventaja de las tuberías en los sistemas Linux y UNIX es que no hay ningún archivo intermedio involucrado con una tubería: la salida estándar del primer comando no se escribe en un archivo y luego se lee con el segundo comando.

Para el siguiendo los ejercicios de práctica usaremos el poema “ Un niño feliz ” (autor anónimo).

comando gato comando cat ejemplo de comando cat usando sed

El nombre sed es la abreviatura de editor de flujo. Para aquellos que no están familiarizados con el término, se utiliza un editor de flujo para realizar transformaciones de texto básicas en un flujo de entrada (un archivo o entrada de una canalización).

El uso más básico (y popular) de sed es el sustitución de caracteres. Comenzaremos cambiando cada aparición de la y minúscula a MAYÚSCULAS Y y redirigiendo la salida a ahappychild2.txt . El indicador g indica que sed debe realizar la sustitución de todas las instancias de término en cada línea del archivo. Si se omite este indicador, sed reemplazará solo la primera aparición del término en cada línea.

Sintaxis básica: archivo # sed ‘s/term/reemplazo/indicador’ Nuestro ejemplo: # sed ‘s/y/Y/g ‘ahappychild.txt> ahappychild2.txt  comando sed  comando sed ejemplo de comando sed

Si desea buscar o reemplazar un carácter especial (como /, \ , & ) necesita escapar, en el término o cadenas de reemplazo, con una barra inclinada hacia atrás.

Por ejemplo, nosotros sustituirá la palabra y por un ampersand. Al mismo tiempo, reemplazaremos la palabra I por cuando la primera se encuentre al principio de una línea.

# sed ‘s/y/\ &/g; s/^ I/You/g ‘ahappychild.txt  sed reemplazar cadena  sed replace string sed replace string

En el comando anterior, un ^ (signo de intercalación) es una expresión regular muy conocida que se usa para representar el comienzo de una línea.

Como puede ver, podemos combinar dos o más comandos de sustitución (y usar expresiones regulares dentro de ellos ) separándolos con un punto y coma y encerrando el conjunto entre comillas simples.

Otro uso de sed es mostrar (o eliminar) una parte elegida de un archivo. En el siguiente ejemplo, mostraremos las primeras 5 líneas de /var/log/messages del 8 de junio.

# sed-n ‘/^ 8 de junio/p’/var/log/mensajes | sed-n 1,5p

Tenga en cuenta que, por defecto, sed imprime todas las líneas. Podemos anular este comportamiento con la opción -n y luego decirle a sed que imprima (indicado por p ) solo la parte del archivo (o la tubería) que coincide con el patrón (8 de junio al principio de la línea en el primer caso y líneas 1 a 5 inclusive en el segundo caso).

Finalmente, puede ser útil al inspeccionar scripts o archivos de configuración inspeccionar el código en sí y dejar comentarios. La siguiente línea de sed elimina ( d ) líneas en blanco o aquellas que comienzan con # (el carácter | indica un OR booleano entre los dos expresiones).

# sed ‘/^ # \ | ^ $/d’ apache2.conf  sed match string  sed match string sed match string uniq Command

El comando uniq nos permite informar o eliminar líneas duplicadas en un archivo, escribiendo en stdout por defecto. Debemos tener en cuenta que uniq no detecta líneas repetidas a menos que sean adyacentes. Por lo tanto, uniq se usa comúnmente junto con un sort anterior (que se usa para ordenar líneas de archivos de texto). De forma predeterminada, ordenar toma el primer campo (separado por espacios) como campo clave. Para especificar un campo de clave diferente, necesitamos usar la opción -k .

Ejemplos

El du –sch/ruta/a/directorio/* El comando devuelve el uso de espacio en disco por subdirectorios y archivos dentro del directorio especificado en formato legible por humanos (también muestra un total por directorio), y no ordena la salida por tamaño, sino por subdirectorio y nombre de archivo. Podemos usar el siguiente comando para ordenar por tamaño.

# du-sch/var/* | sort –h  comando sort  comando de ordenación ejemplo de comando de ordenación

Puede contar el número de eventos en un registro por fecha al decirle a uniq que realice el comparación usando los primeros 6 caracteres (-w 6) de cada línea (donde se especifica la fecha), y prefijando cada línea de salida por el número de ocurrencias (-c ) con el siguiente comando.

# cat/var/log/mail.log | uniq-c-w 6  Count Numbers en Archivo  Contar números en archivo Contar números en archivo

Por último, puede combinar ordenar y uniq (como suelen ser). Considere el siguiente archivo con una lista de donantes, fecha de donación y monto. Supongamos que queremos saber cuántos donantes únicos hay. Usaremos el siguiente comando para cortar el primer campo (los campos están delimitados por dos puntos), ordenar por nombre y eliminar las líneas duplicadas.

# cat sortuniq.txt | cut-d:-f1 | ordenar | uniq  Buscar registros únicos en archivo  Buscar registros únicos en el archivo Buscar registros únicos en archivo

Leer también : 13 ejemplos de comandos “cat”

Comando grep

grep busca archivos de texto o (salida de comando) para la aparición de una expresión regular especificada y genera cualquier línea que contenga una coincidencia con la salida estándar.

Ejemplos

Muestra la información de /etc/passwd para el usuario gacanepa, ignorando mayúsculas y minúsculas.

# grep-i gacanepa/etc/passwd  grep Comando  grep Command ejemplo de comando grep

Muestra todo el contenido de /etc cuyo nombre comienza con rc seguido de cualquier número.

# ls-l/etc | grep rc [0-9]  Listar contenido usando grep  Mostrar contenido usando grep Mostrar contenido usando grep

Leer también : 12 Ejemplos de comandos “grep”

Uso de comandos tr

El comando tr se puede usar para traducir (cambiar) o eliminar caracteres de stdin y escribir el resultado en stdout.

Ejemplos

Cambie todas las minúsculas a mayúsculas en el archivo sortuniq.txt.

# cat sortuniq.txt | tr [: inferior:] [: superior:] Ordenar Cadenas en el archivo  Ordenar cadenas en archivo Ordenar cadenas en archivo

Apriete el delimitador en la salida de ls-l a un solo espacio.

# ls-l | tr-s ”  Squeeze Delimiter Squeeze Delimiter Apretar Delimitador cortar Uso del comando

El comando cortar extrae partes de la entrada líneas (de stdin o archivos) y muestra el resultado en la salida estándar, según el número de bytes (opción -b ), caracteres (-c ) o campos (-f ). En este último caso (basado en campos), el separador de campo predeterminado es una pestaña, pero se puede especificar un delimitador diferente usando la opción -d .

Ejemplos

Extraer el usuario cuentas y los shells predeterminados que se les asignan desde /etc/passwd (la opción –d nos permite especificar el delimitador de campo, y –f el interruptor indica qué campo (s) se extraerán.

# cat/etc/passwd | cut-d:-f1,7  Extraer cuentas de usuario  Extraer cuentas de usuario Extraer cuentas de usuario

Resumiendo, crearemos un flujo de texto que constará del primer y tercer no en blanco archivos de la salida del último comando. Usaremos grep como primer filtro para verificar las sesiones del usuario gacanepa , luego ajustaremos los delimitadores a un solo espacio ( tr-s ” ). A continuación, extraeremos el primer y tercer campo con cortar , y finalmente ordenaremos por el segundo campo (direcciones IP en este caso) que se muestran únicos.

# last | grep gacanepa | tr-s ” | cut-d ”-f1,3 | sort-k2 | uniq  last command  último comando último ejemplo de comando

El comando anterior muestra cómo se pueden combinar varios comandos y tuberías para obtener datos filtrados según ng a nuestros deseos. Siéntase libre de ejecutarlo también por partes, para ayudarlo a ver la salida que se canaliza de un comando al siguiente (¡por cierto, puede ser una gran experiencia de aprendizaje!).

Resumen

Aunque este ejemplo (junto con el resto de los ejemplos del tutorial actual) puede no parecer muy útil a primera vista, son un buen punto de partida para comenzar a experimentar con comandos que se utilizan para crear, editar y manipular archivos de la línea de comandos de Linux. No dude en dejar sus preguntas y comentarios a continuación, ¡serán muy apreciados!