Warning: Undefined variable $menu_width in /home/sdove/public_html/wp-content/themes/vw-hosting-services-pro/template-parts/header/content-header.php on line 122
Cómo administrar paquetes en Ubuntu y Debian con Apt-Get y Apt-Cache
Apt es una interfaz de línea de comandos para el sistema de empaquetado dpkg y es la forma preferida de gestionar software desde la línea de comandos en muchas distribuciones. Es el principal sistema de gestión de paquetes en Debian y distribuciones Linux basadas en Debian, como Ubuntu.
Mientras que una herramienta llamada “dpkg” constituye la capa de empaquetado subyacente, aptproporciona apt-cacheinterfaces intuitivas e implementa la gestión de dependencias. Esto permite a los usuarios gestionar grandes cantidades de software de forma eficiente y sencilla.
En esta guía, analizaremos el uso básico de apty apt-cachecómo pueden administrar su software. Practicaremos en un servidor en la nube Ubuntu 22.04, pero los mismos pasos y técnicas se aplican a cualquier otra distribución basada en Ubuntu o Debian.
Cómo actualizar la base de datos de paquetes con Apt
Apt opera con una base de datos de software conocido y disponible. Realiza instalaciones, búsquedas de paquetes y muchas otras operaciones consultando esta base de datos.
Por eso, antes de comenzar cualquier operación de empaquetado con apt, debemos asegurarnos de que nuestra copia local de la base de datos esté actualizada.
Actualice la base de datos local con apt update. Apt requiere privilegios administrativos para la mayoría de las operaciones:
sudo apt update
Verá una lista de los servidores de los que estamos recuperando información. Después de esto, su base de datos debería estar actualizada.
Cómo actualizar los paquetes instalados con Apt
Puede actualizar los paquetes de su sistema usando apt upgrade. Se le solicitará que confirme las actualizaciones y reinicie los servicios del sistema actualizados.
sudo apt upgrade
Cómo instalar nuevos paquetes con Apt
Si conoce el nombre de un paquete que necesita instalar, puede instalarlo usando apt install:
sudo apt install package1 package2 …
Puedes ver que es posible instalar varios paquetes a la vez, lo que es útil para adquirir todo el software necesario para un proyecto en un solo paso.
Apt instala no sólo el software solicitado, sino también cualquier software necesario para instalarlo o ejecutarlo.
Puedes instalar un programa llamado slescribiendo:
sudo apt install sl
Después de eso, podrás ejecutarlo slen la línea de comandos.
Cómo eliminar un paquete con Apt
Para eliminar un paquete de su sistema, ejecute apt remove:
sudo apt remove package_name
Este comando elimina el paquete, pero conserva los archivos de configuración por si lo vuelve a instalar más adelante. De esta forma, la configuración se mantendrá intacta, aunque el programa no esté instalado.
Si necesita limpiar los archivos de configuración y el programa, utilice apt purge:
sudo apt purge package_name
Esto desinstala el paquete y elimina cualquier archivo de configuración asociado con el paquete.
Para eliminar cualquier paquete que se instaló automáticamente para dar soporte a otro programa y que ya no sea necesario, escriba el siguiente comando:
sudo apt autoremove
También puede especificar un nombre de paquete después del autoremovecomando para desinstalar un paquete y sus dependencias.
Banderas de opciones comunes de Apt
Hay varias opciones adicionales que se pueden especificar mediante indicadores. Repasaremos algunas de las más comunes.
Para hacer un “ensayo” de un procedimiento para tener una idea de lo que hará una acción, puede pasar la -sbandera para “simular”:
sudo apt install -s htop
OutputReading package lists... Done
Building dependency tree... Done
Reading state information... Done
Suggested packages:
lm-sensors
The following NEW packages will be installed:
htop
0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
Inst htop (3.0.5-7build2 Ubuntu:22.04/jammy [amd64])
Conf htop (3.0.5-7build2 Ubuntu:22.04/jammy [amd64])
En lugar de acciones reales, puede ver una sección Insty Confque especifica dónde se instalaría y configuraría el paquete si se eliminara el “-s”.
Si no desea que se le solicite que confirme sus opciones, también puede pasar la -ybandera para asumir automáticamente “sí” a las preguntas.
sudo apt remove -y htop
Si desea descargar un paquete, pero no instalarlo, puede ejecutar el siguiente comando:
sudo apt install -d packagename
Los archivos se conservarán en formato /var/cache/apt/archives.
Si desea suprimir la salida, puede pasar la -qqbandera al comando:
sudo apt remove -qq packagename
Cómo encontrar un paquete con Apt-Cache
La herramienta de empaquetado apt es en realidad un conjunto de herramientas complementarias relacionadas que se utilizan para administrar el software del sistema.
Mientras aptse utiliza para actualizar, instalar y eliminar paquetes, apt-cachese utiliza para consultar la base de datos de paquetes para obtener información sobre los paquetes.
Puede usar apt-cache searchpara buscar un paquete que se ajuste a sus necesidades. Tenga en cuenta que apt-cache no suele requerir privilegios de administrador:
apt-cache search what_you_are_looking_for
Por ejemplo, para encontrar htopuna versión mejorada del topmonitor del sistema, puede utilizar:
apt-cache search htop
Outputhtop - interactive processes viewer
aha - ANSI color to HTML converter
bashtop - Resource monitor that shows usage and stats
bpytop - Resource monitor that shows usage and stats
btop - Modern and colorful command line resource monitor that shows usage and stats
libauthen-oath-perl - Perl module for OATH One Time Passwords
pftools - build and search protein and DNA generalized profiles
También puedes buscar términos más genéricos. En este ejemplo, buscaremos software de conversión de MP3:
apt-cache search mp3 convert
Outputabcde - A Better CD Encoder
cue2toc - converts CUE files to cdrdao's TOC format
dir2ogg - audio file converter into ogg-vorbis format
easytag - GTK+ editor for audio file tags
ebook2cw - convert ebooks to Morse MP3s/OGGs
ebook2cwgui - GUI for ebook2cw
ffcvt - ffmpeg convert wrapper tool
. . .
Cómo ver la información del paquete con Apt-Cache
Para ver información sobre un paquete, incluida una descripción extendida, utilice la siguiente sintaxis:
apt-cache show package_name
Esto también proporcionará el tamaño de la descarga y las dependencias necesarias para el paquete.
Para ver si un paquete está instalado y verificar a qué repositorio pertenece, puede utilizar apt-cache policy:
apt-cache policy package_name
Conclusión
Ahora debería saber lo suficiente sobre apt-get y apt-cache para administrar la mayor parte del software en su servidor.
Si bien a veces es necesario ir más allá de estas herramientas y del software disponible en los repositorios, la mayoría de las operaciones de software pueden gestionarse mediante estas herramientas.
A continuación, podrá leer sobre la gestión de paquetes de Ubuntu y Debian en detalle.
Las utilidades de Linux suelen seguir la filosofía de diseño de Unix. Se fomenta que las herramientas sean pequeñas, utilicen archivos de texto sin formato para la entrada y salida, y operen de forma modular. Gracias a este legado, disponemos de una gran funcionalidad de procesamiento de texto con herramientas como sed y awk.
awkEs un lenguaje de programación y procesador de texto que permite manipular datos textuales de forma muy útil. En esta guía, explorarás cómo usar la awkherramienta de línea de comandos y cómo procesar texto.
Sintaxis básica
El awkcomando está incluido de forma predeterminada en todos los sistemas Linux modernos, por lo que no es necesario instalarlo para comenzar a usarlo.
awkEs especialmente útil al gestionar archivos de texto con un formato predecible. Por ejemplo, es excelente para analizar y manipular datos tabulares. Opera línea por línea e itera por todo el archivo.
De forma predeterminada, se utilizan espacios en blanco (tabuladores, etc.) para separar los campos. Afortunadamente, muchos archivos de configuración de Linux utilizan este formato.
Puede omitir la parte de búsqueda o la parte de acción de cualquier awkcomando. Por defecto, la acción que se realiza si no se especifica la parte “acción” es “imprimir”. Esto simplemente imprime todas las líneas que coinciden.
Si no se proporciona la parte de búsqueda, awkrealiza la acción que aparece en cada línea.
Si se proporcionan ambos, awkutiliza la parte de búsqueda para decidir si la línea actual refleja el patrón y luego realiza las acciones en función de las coincidencias.
En su forma más simple, puedes usar awklike catpara imprimir todas las líneas de un archivo de texto en la pantalla.
Crea un favorite_food.txtarchivo que enumere las comidas favoritas de un grupo de amigos:
echo "carrot sandy
wasabi luke
sandwich brian
salad ryan
spaghetti jessica" > favorite_food.txt
Ahora use el awkcomando para imprimir el archivo en la pantalla:
awk '{print}' favorite_food.txt
Verás el archivo impreso en la pantalla:
Outputcarrot sandy
wasabi luke
sandwich brian
salad ryan
spaghetti jessica
Esto no es muy útil. Probemos awklas funciones de filtrado de búsqueda buscando el texto “arena” en el archivo:
awk '/sand/' favorite_food.txt
Outputcarrot sandy
sandwich brian
Como puedes ver, awkahora solo imprime las líneas que tienen los caracteres “sand” en ellas.
Usando expresiones regulares, puedes seleccionar partes específicas del texto. Para mostrar solo la línea que empieza con las letras “sand”, usa la expresión regular ^sand:
awk '/^sand/' favorite_food.txt
Esta vez, solo se muestra una línea:
Outputsandwich brian
De igual forma, puede usar la sección de acción para especificar qué información desea imprimir. Por ejemplo, para imprimir solo la primera columna, use el siguiente comando:
awk '/^sand/ {print $1;}' favorite_food.txt
Outputsandwich
Puede referenciar cada columna (delimitada por espacios) mediante variables asociadas a su número de columna. Por ejemplo, la primera columna es $1, la segunda es $2, y puede referenciar toda la línea con $0.
Variables internas y formato expandido
El awkcomando utiliza algunas variables internas para asignar ciertas piezas de información mientras procesa un archivo.
Las variables internas que awkutiliza son:
NOMBRE DE ARCHIVO : Hace referencia al archivo de entrada actual.
FNR : Referencia el número del registro actual en relación con el archivo de entrada actual. Por ejemplo, si tiene dos archivos de entrada, esto le indicaría el número de registro de cada archivo en lugar del total.
FS : El separador de campo actual que se utiliza para identificar cada campo de un registro. Por defecto, se establece en espacios.
NF : El número de campos en el registro actual.
NR : El número del registro actual.
OFS : El separador de campo para los datos de salida. Por defecto, se establece en espacios.
ORS : El separador de registros para los datos de salida. Por defecto, es un carácter de nueva línea.
RS : El separador de registros utilizado para distinguir registros separados en el archivo de entrada. Por defecto, es un carácter de nueva línea.
Puede cambiar los valores de estas variables a voluntad para adaptarlas a las necesidades de sus archivos. Normalmente, esto se hace durante la fase de inicialización del procesamiento.
Esto nos lleva a otro concepto importante. La awksintaxis es un poco más compleja que la que has usado hasta ahora. También hay bloques opcionales BEGINque ENDpueden contener comandos para ejecutarse antes y después del procesamiento del archivo, respectivamente.
Esto hace que nuestra sintaxis expandida se vea más o menos así:
Las palabras clave BEGINy ENDson conjuntos específicos de condiciones, al igual que los parámetros de búsqueda. Coinciden antes y después de procesar el documento.
Esto significa que puedes cambiar algunas de las variables internas de la BEGINsección. Por ejemplo, el /etc/passwdarchivo se delimita con dos puntos ( :) en lugar de espacios.
Para imprimir la primera columna de este archivo, ejecute el siguiente comando:
awk 'BEGIN { FS=":"; }
{ print $1; }' /etc/passwd
Outputroot
daemon
bin
sys
sync
games
man
. . .
Puede usar los bloques BEGINy ENDpara imprimir información sobre los campos que está imprimiendo. Use el siguiente comando para transformar los datos del archivo en una tabla, con tabulaciones bien espaciadas \t:
Como puedes ver, puedes formatear las cosas bastante bien aprovechando algunas de awklas características de .
Cada sección expandida es opcional. De hecho, la sección de acción principal es opcional si se define otra sección. Por ejemplo, se pueden hacer cosas como esta:
awk 'BEGIN { print "We can use awk like the echo command"; }'
Y verás este resultado:
OutputWe can use awk like the echo command
Ahora veamos cómo buscar texto dentro de los campos de salida.
Búsqueda de campos y expresiones compuestas
En uno de los ejemplos anteriores, imprimiste la línea del favorite_food.txtarchivo que comenzaba con “sand”. Esto fue fácil porque buscabas el comienzo de toda la línea.
¿Qué sucedería si quisieras averiguar si un patrón de búsqueda coincide al principio de un campo ?
Cree una nueva versión del favorite_food.txtarchivo que agregue un número de artículo delante de la comida de cada persona:
echo "1 carrot sandy
2 wasabi luke
3 sandwich brian
4 salad ryan
5 spaghetti jessica" > favorite_food.txt
Si desea encontrar todos los alimentos de este archivo que comienzan con “sa”, puede comenzar probando algo como esto:
awk '/sa/' favorite_food.txt
Esto muestra todas las líneas que contienen “sa”:
Output1 carrot sandy
2 wasabi luke
3 sandwich brian
4 salad ryan
Aquí, se busca cualquier instancia de “sa” en la palabra. Esto termina incluyendo palabras como “wasabi”, que tiene el patrón en el medio, o “sandy”, que no está en la columna deseada. En este caso, solo se buscan palabras que empiecen por “sa” en la segunda columna.
Puedes indicar awkque solo coincida con el comienzo de la segunda columna usando este comando:
awk '$2 ~ /^sa/' favorite_food.txt
Como puedes ver, esto nos permite buscar una coincidencia solo al comienzo de la segunda columna.
La field_num ~parte especifica que awksólo se debe prestar atención a la segunda columna.
Output3 sandwich brian
4 salad ryan
Puedes buscar fácilmente elementos que no coincidan incluyendo el carácter “!” antes de la tilde (~). Este comando devolverá todas las líneas que no tengan un alimento que empiece por “sa”:
awk '$2 !~ /^sa/' favorite_food.txt
Output1 carrot sandy
2 wasabi luke
5 spaghetti jessica
Si más adelante decide que solo le interesan las líneas que no comienzan con “sa” y el número de elemento es menor que 5, puede usar una expresión compuesta como esta:
awk '$2 !~ /^sa/ && $1 < 5' favorite_food.txt
Esto introduce algunos conceptos nuevos. El primero es la posibilidad de añadir requisitos adicionales para que la línea coincida mediante el &&operador. Con este operador, se puede combinar cualquier número de condiciones para que la línea coincida. En este caso, se utiliza este operador para añadir una comprobación de que el valor de la primera columna sea menor que 5.
Verás este resultado:
Output1 carrot sandy
2 wasabi luke
Puedes usarlo awkpara procesar archivos, pero también puedes trabajar con la salida de otros programas.
Procesamiento de la salida de otros programas
Puedes usar el awkcomando para analizar la salida de otros programas en lugar de especificar un nombre de archivo. Por ejemplo, puedes usar awkpara analizar la dirección IPv4 del ipcomando.
El ip acomando muestra la dirección IP, la dirección de difusión y otra información sobre todas las interfaces de red de su equipo. Para mostrar la información de la interfaz llamada eth0, utilice este comando:
ip a s eth0
Verás los siguientes resultados:
Output2571: eth0@if2572: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:0b brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.11/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
Puedes usarlo awkpara apuntar a la inetlínea y luego imprimir solo la dirección IP:
ip a s eth0 | awk -F '[\/ ]+' '/inet / {print $3}'
La -Fbandera indica awkque se debe delimitar con barras o espacios usando la expresión regular [\/ ]+. Esto divide la línea inet 172.17.0.11/16en campos separados. La dirección IP se encuentra en el tercer campo porque los espacios al principio de la línea también cuentan como un campo, ya que se delimitó con espacios además de barras. Tenga en cuenta que, awken este caso, los espacios consecutivos se tratan como un solo espacio.
La salida muestra la dirección IP:
Output172.17.0.11
Encontrarás muchos lugares donde puedes usar awkpara buscar o analizar la salida de otros comandos.
Conclusión
A estas alturas, deberías tener una comprensión básica de cómo usar el awkcomando para manipular, formatear e imprimir selectivamente archivos y secuencias de texto. Sin embargo, Awk es un tema mucho más amplio y, en realidad, es un lenguaje de programación completo con asignación de variables, estructuras de control, funciones integradas y más. Puedes usarlo en tus propios scripts para formatear texto de forma fiable.
El sedcomando “Editor de Streams” en Linux es una potente utilidad para la manipulación de texto. Permite a los usuarios realizar diversas operaciones, como buscar, reemplazar, insertar y eliminar texto en archivos. Este tutorial ofrece una guía completa para dominar el sedcomando con ejemplos prácticos, explicaciones de sintaxis y casos de uso avanzados.
¿Qué es el comando sed?
El sedcomando es un editor de flujo que procesa texto línea por línea. Esto permite modificar el contenido del archivo sin abrirlo directamente en un editor de texto. Se usa ampliamente en scripts de shell y administración de sistemas para automatizar las tareas de procesamiento de texto.
Características principales de sed
1. Coincidencia y reemplazo de patrones 2. Edición de archivos en el lugar 3. Filtrado y manipulación de texto 4. Compatibilidad con expresiones regulares 5. Operaciones multilínea
Sintaxis básica del sed comando
La sintaxis básica del sedcomando consta de tres componentes principales: las opciones del comando, un script que define las instrucciones de edición y el archivo que se va a procesar.
Esta estructura permite a los usuarios especificar el comportamiento del comando, definir las transformaciones de texto y aplicarlas al archivo deseado.
Opciones de comando : Se utilizan para especificar el comportamiento del comando. Por ejemplo, esta -iopción se utiliza para la edición in situ de archivos, es decir, para sobrescribirlos.
Script : El script define las instrucciones de edición. Puede estar entre comillas simples ( ') o dobles ( "). Puede contener uno o más comandos de edición, separados por punto y coma ( ;).
Archivo de entrada : Este es el archivo que se procesará. Puede ser un solo archivo o una lista de archivos separados por espacios. Si no se especifica ningún archivo, sedse lee desde la entrada estándar.
La sintaxis básica del sedcomando es la siguiente:
sed [options] 'script' file
En esta sintaxis, sedes el comando, [options]son las opciones del comando, 'script'contiene los comandos de edición y filees el archivo que se va a procesar.
sed [options] 'script' file
Lo entenderás mejor con los ejemplos que aparecen a continuación.
sed 's/hello/world/' sample.txt
Esto reemplaza la primera aparición de “hola” con “mundo” en cada línea de sample.txt.
Opciones de uso común ensed
Opción
Descripción
Ejemplo
-i
Edición in situ
sed -i 's/old/new/' file.txt
-n
Suprimir la impresión automática
sed -n '/pattern/p' file.txt
-e
Ejecutar múltiples comandos
sed -e 's/old/new/' -e '/pattern/d' file.txt
-f
Leer comandos de un archivo
sed -f script.sed file.txt
-r
Utilice expresiones regulares extendidas
sed -r 's/old/new/' file.txt
-E
Utilice expresiones regulares extendidas (similares a -r)
sed -E 's/old/new/' file.txt
-z
Separar líneas con carácter NUL
sed -z 's/old/new/' file.txt
-l
Especifique la longitud de línea para el comando ‘l’
sed -l 100 'l' file.txt
-b
Modo binario (no elimine los caracteres CR)
sed -b 's/old/new/' file.txt
Casos de uso más comunes desed
A continuación se muestran algunos de los casos de uso más prácticos del sedcomando.
Primero, creemos un archivo de texto de muestra file1.txty escribamos en él el siguiente texto, para facilitar la comprensión y el seguimiento.
cat > file1.txt
Copie y pegue el siguiente texto:
Linux is a family of free and open-source operating systems based on the Linux kernel.
Operating systems based on Linux are known as Linux distributions or distros.
Examples include Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Linux, and many others.
Buscar y reemplazar
En el siguiente comando, sse especifica la operación de sustitución y /son delimitadores. /Linux/Es el patrón de búsqueda y Unixes la cadena de reemplazo.
Nota: De forma predeterminada, el sedcomando solo reemplaza la primera aparición del patrón en cada línea y no reemplazará la segunda o tercera aparición en la línea.
sed 's/Linux/Unix/' file1.txt
Este comando reemplaza la primera aparición de “Linux” con “Unix” en cada línea.
Producción:
OutputUnix is a family of free and open-source operating systems based on the Linux kernel.
Operating systems based on Unix are known as Linux distributions or distros.
Examples include Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Unix, and many others.
Reemplazar globalmente en cada línea
La bandera de sustitución /g(reemplazo global) especifica el sedcomando para reemplazar todas las ocurrencias de la cadena en la línea.
sed 's/Linux/Unix/g' file1.txt
Este comando reemplaza todas las apariciones de “Linux” con “Unix” en cada línea.
Producción:
OutputUnix is a family of free and open-source operating systems based on the Unix kernel.
Operating systems based on Unix are known as Unix distributions or distros.
Examples include Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Unix, and many others.
Edición en el lugar
La opción `-i` permite la edición in situ del archivo. En pocas palabras, lo sobrescribe.
sed -i 's/Linux/Unix/' file1.txt
Este comando edita el archivo en su lugar, reemplazando “Linux” por “Unix” directamente en file1.txt. Sin -i, la inserción solo ocurre en la salida y no modifica el contenido del archivo. Para que el cambio sea persistente, debe usar la -iopción.
Eliminar líneas específicas
sed '2d' file1.txt
Este comando eliminará la segunda línea de file1.txt.
Producción:
OutputUnix is a family of free and open-source operating systems based on the Linux kernel.
Examples include Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Unix, and many others.
Imprimir líneas específicas
Suprime la -nimpresión automática del espacio de patrón y pes el comando de impresión.
sed -n '1,2p' file1.txt
Este comando imprime las líneas 1 a 2 de file1.txt.
Producción:
OutputUnix is a family of free and open-source operating systems based on the Unix kernel.
Operating systems based on Unix are known as Unix distributions or distros.
Eliminar líneas que coinciden con un patrón
Las /pattern/líneas coincidentes que contienen el patrón y la dbandera eliminan las líneas coincidentes.
sed '/kernel/d' file1.txt
Este comando eliminará todas las líneas que contengan la palabra “kernel”.
Producción:
OutputOperating systems based on Unix are known as Unix distributions or distros.
Examples include Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Unix, and many others.
Sustituir con un archivo de respaldo
El siguiente comando reemplazará todas las instancias de “Unix” por “Linux” y creará un archivo de respaldo con el file1.txt.baknombre del archivo anterior antes de reemplazarlo. Esto -i.bakpermite la edición in situ y crea un archivo de respaldo.
sed -i.bak 's/Unix/Linux/g' file1.txt
Producción:
OutputLinux is a family of free and open-source operating systems based on the Linux kernel.
Operating systems based on Linux are known as Linux distributions or distros.
Examples include Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Linux, and many others.
Y aquí está el contenido del archivo de respaldo file1.txt.bak.
more file1.txt.bak
OutputUnix is a family of free and open-source operating systems based on the Unix kernel.
Operating systems based on Unix are known as Unix distributions or distros.
Examples include Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Unix, and many others.
Reemplazar tabulaciones con espacios
El siguiente comando reemplazará cada tabulación con cuatro espacios. La \tbandera coincide con las tabulaciones y /gsirve para el reemplazo global en toda la línea.
sed 's/\t/ /g' file1.txt
Producción:
Output Linux is a family of free and open-source operating systems based on the Linux kernel.
Operating systems based on Linux are known as Linux distributions or distros.
Examples include Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Linux, and many others.
Eliminar líneas vacías
El siguiente comando eliminará todas las líneas vacías de file1.txt. El /^$comando “matches” elimina las líneas vacías y /dlas líneas coincidentes.
sed '/^$/d' file1.txt
Puede editar el file1.txtarchivo usando viel editor de texto y agregar algunas líneas vacías para probar este comando.
Líneas de impresión que coinciden con un patrón
El siguiente comando imprime solo las líneas que contienen “Ubuntu”.
sed -n '/Ubuntu/p' file1.txt
La -nopción suprime la impresión automática. /Ubuntu/Coincide con las líneas que contienen el patrón y pse imprimen las líneas coincidentes.
Producción:
OutputExample includes Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Linux, and many others.
Casos de uso avanzados desed
Esta sección consta de algunos casos de uso avanzados y más complicados del sedcomando.
Insertar texto antes de una línea
El siguiente comando inserta “Este es el texto insertado.” antes de la segunda línea en file1.txt.
sed -i '2i\This is inserted text.' file1.txt
La -iopción es para edición en el lugar y la 2i\bandera inserta texto antes de la segunda línea.
Nota: Sin -i, la inserción solo se produce en la salida y no modifica el contenido del archivo. Para que el cambio sea persistente, debe usar la -iopción con el sedcomando.
Producción:
OutputLinux is a family of free and open-source operating systems based on the Linux kernel.
This is inserted text.
Operating systems based on Linux are known as Linux distributions or distros.
Example includes Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Linux, and many others.
Reemplazar la enésima ocurrencia de un patrón en una línea
Use los indicadores /1o /2para reemplazar la primera y la segunda aparición de un patrón en una línea. El siguiente comando reemplaza la segunda aparición de la palabra “Linux” por “Unix” en una línea.
sed 's/Linux/Unix/2' file1.txt
Producción:
OutputLinux is a family of free and open-source operating systems based on the Unix kernel.
This is inserted text.
Operating systems based on Linux are known as Unix distributions or distros.
Examples includes Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Linux, and many others.
Añadir cadena después de una línea
El siguiente comando añade “Este es el texto añadido” después de la tercera línea file1.txt. Esta -iopción garantiza que los cambios se guarden y 3a\añade el texto después de la tercera línea especificada.
sed -i '3a\This is appended text.' file1.txt
Producción:
OutputLinux is a family of free and open-source operating systems based on the Linux kernel.
This is inserted text.
Operating systems based on Linux are known as Linux distributions or distros.
This is appended text.
Example includes Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Linux, and many others.
Reemplazar una cadena al principio de una línea
La ^<pattern>bandera se usa para coincidir con un patrón específico al inicio de una línea. El siguiente comando reemplaza «Linux» por «Unix» solo si «Linux» aparece al inicio de una línea.
sed 's/^Linux/Unix/' file1.txt
Producción:
OutputUnix is a family of free and open-source operating systems based on the Linux kernel.
This is inserted text.
Operating systems based on Linux are known as Linux distributions or distros.
This is appended text.
Example includes Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Linux, and many others.
Reemplazar cadena al final de una línea
El siguiente comando reemplaza “distros.” por “distributions” solo si aparece al final de una línea. La <pattern>$bandera se usa para hacer coincidir un patrón específico con el final de una línea.
sed 's/distros.$/distributions/' file1.txt
Producción:
OutputLinux is a family of free and open-source operating systems based on the Linux kernel.
This is inserted text.
Operating systems based on Linux are known as Linux distributions or distributions.
This is appended text.
Example includes Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Linux, and many others.
Reemplazo sin distinción entre mayúsculas y minúsculas
El siguiente comando reemplaza “linux” por “Unix” sin distinguir entre mayúsculas y minúsculas. La Iopción hace que la coincidencia no distinga entre mayúsculas y minúsculas.
sed 's/linux/Unix/I' file1.txt
Extraer líneas entre patrones
El siguiente comando imprime todas las líneas entre “insertado” y “agregado”, inclusive.
sed -n '/inserted/,/appended/p' file1.txt
,:Operador de rango para hacer coincidir líneas entre dos patrones.
p:Imprime líneas coincidentes.
Y la -nopción de suprimir la impresión automática de líneas.
Producción:
OutputThis is inserted text.
Operating systems based on Linux are known as Linux distributions or distros.
This is appended text.
Procesar varios archivos
El siguiente comando reemplaza “Linux” con “Unix” en ambos file1.txty file2.txtsobrescribe el archivo.
sed -i 's/Linux/Unix/' file1.txt file2.txt
Formato y numeración de líneas no vacías
El siguiente comando agrega números de línea a líneas no vacías en file1.txt.
sed '/./=' file1.txt | sed 'N;s/\n/ /'
/./=: Coincide con líneas que no están vacías y las numera.
N:Agrega la siguiente línea al espacio del patrón.
s/\n/ /: Reemplaza el carácter de nueva línea con un espacio.
Producción:
Output1 Linux is a family of free and open-source operating systems based on the Linux kernel.
2 This is inserted text.
3 Operating systems based on Linux are known as Linux distributions or distros.
4 This is appended text.
5 Example includes Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Linux, and many others.
Reemplazar cadena en un número de línea específico
Puede restringir el sedcomando para que reemplace la cadena en una línea específica. El siguiente comando reemplaza la cadena “distros” por “distributions” solo en la tercera línea.
sed '3 s/distros/distributions/' file1.txt
Producción:
Linux is a family of free and open-source operating systems based on the Linux kernel.
This is inserted text.
Operating systems based on Linux are known as Linux distributions or distributions.
This is appended text.
Example includes Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Linux, and many others.
Reemplazo de cadena en un rango de líneas
También puede especificar un rango de números de línea para el sedcomando que reemplaza una cadena. El siguiente comando reemplaza solo las primeras apariciones de “Linux” por “Unix” entre las líneas 1 y 3.
sed '1,3 s/Linux/Unix/' file1.txt
Producción:
OutputUnix is a family of free and open-source operating systems based on the Linux kernel.
This is inserted text.
Operating systems based on Unix are known as Linux distributions or distros.
This is appended text.
Example includes Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Linux, and many others.
Consideraciones de rendimiento para archivos grandes
Procesar archivos grandes sedpuede consumir muchos recursos, especialmente al trabajar con numerosas operaciones o conjuntos de datos muy grandes. Aquí tienes algunos consejos para optimizar el rendimiento y garantizar un uso eficiente del sedcomando:
1. Usar -npara minimizar la salida innecesaria : Esta -nopción suprime la impresión automática de cada línea y garantiza que solo se muestre la salida deseada. Esto reduce la sobrecarga al trabajar con archivos grandes.
Ejemplo:
sed -n '/pattern/p' largefile.txt
2. Simplifique los scripts : minimice el número de operaciones en un solo comando. Por ejemplo, en lugar de ejecutar varios sedcomandos secuencialmente, combínelos en un solo script para reducir la lectura de archivos.
Ejemplo:
sed -e 's/foo/bar/' -e '/pattern/d' largefile.txt
3. Entrada de flujo con tuberías : al procesar datos de otros comandos o flujos, utilice tuberías para evitar la creación de archivos intermedios y reducir la E/S de disco.
Ejemplo:
cat largefile.txt | sed 's/foo/bar/' > output.txt
4. Evite la edición in situ en archivos grandes : en lugar de modificar directamente archivos grandes, escriba la salida en un nuevo archivo y reemplace el original después de verificar la corrección.
Ejemplo:
sed 's/old/new/' largefile.txt > temp.txt && mv temp.txt largefile.txt
5. Alternativas de referencia : para archivos muy grandes, considere usar herramientas como awk, perl, o grep, que pueden ofrecer un mejor rendimiento para ciertas tareas.
Puede consultar estos tutoriales sobre el comando AWK en Linux y Cómo usar el lenguaje AWK para manipular texto en Linux para obtener más información sobre el uso de awkcomandos en Linux.
Integración con scripts de Shell
El sedcomando se usa comúnmente en scripts de shell para automatizar tareas repetitivas de manipulación de texto. A continuación, un ejemplo:
#!/bin/bash
# Replace all occurrences of "foo" with "bar" in input.txt and save the result
sed 's/foo/bar/g' input.txt > output.txt
Este script procesa input.txty escribe la salida modificada en output.txt.
sedvs otras alternativas
Si bien sedes una herramienta eficaz y ligera para el procesamiento básico de texto, alternativas modernas como awky perlofrecen funciones adicionales, lo que las hace más adecuadas para tareas específicas. A continuación, se detallan las diferencias clave y cuándo usar cada una:
Cuándo utilizarlosed
Sustituciones o eliminaciones de texto rápidas y sencillas.
Transformaciones basadas en líneas en archivos.
Tareas que requieren una sobrecarga de scripting mínima.
Cuándo utilizarloawk
Manejo de datos estructurados como archivos CSV o TSV.
Realizar cálculos aritméticos junto con el procesamiento de texto.
Generar informes formateados a partir de datos de entrada.
Ejemplo:
awk -F, '{print $1, $3}' data.csv
Esto extrae e imprime el primer y tercer campo de un archivo CSV.
Cuándo utilizarloperl
Manipulaciones de texto complejas que involucran expresiones regulares avanzadas.
Combinando el procesamiento de texto con lógica o condiciones.
Cómo escribir scripts compactos pero potentes.
Ejemplo:
perl -pe 's/(error)/WARNING: $1/' logfile.txt
Esto agrega un prefijo “ADVERTENCIA:” a las líneas que contienen la palabra “error”.
Conclusión
Dominar el sedcomando mejora tu capacidad para manipular y procesar texto eficientemente en Linux. Sus potentes funciones y su integración fluida con scripts lo convierten en una herramienta valiosa para tareas de manipulación de texto.
Próximos pasos
Tras dominar los conceptos básicos de sed, podrá aprender técnicas y casos de uso más avanzados. Puede utilizar la siguiente serie de tutoriales sobre sedtemas relacionados que le ayudarán a profundizar su comprensión y mejorar sus habilidades de procesamiento de texto:
Conceptos básicos del uso del sededitor de secuencias para manipular texto en Linux
Intermedio sed: Manipulación de flujos de texto en un entorno Linux
Estos tutoriales abarcan diversos temas, desde sedoperaciones básicas hasta técnicas más complejas de manipulación de texto. Son un recurso valioso para quienes desean dominar el procesamiento de texto en la línea de comandos.
Preguntas frecuentes
¿Qué es sedun comando en Linux?
El sedcomando “Editor de Flujo” en Linux es una potente herramienta de procesamiento de texto que permite realizar transformaciones básicas de texto en un flujo de entrada (un archivo o la entrada de una canalización). Permite buscar, reemplazar, eliminar e insertar texto, lo que lo hace muy útil para automatizar tareas de manipulación de texto.
¿Cuando utilizarlo sed?
Puede utilizarlo seden los siguientes escenarios:
Reemplazo de texto : reemplace palabras, frases o patrones en archivos o transmisiones.
Eliminación de texto : elimina líneas o patrones específicos.
Edición en el lugar : modifique archivos directamente sin necesidad de abrir un editor de texto.
Procesamiento por lotes : realice la misma operación en varios archivos mediante scripts.
Inserción/extracción de texto : inserte o extraiga texto específico en archivos estructurados, como archivos de configuración o registros.