GNU/Linux >> Tutoriales Linux >  >> Linux

Tutorial de Unix Sed:anexar, insertar, reemplazar y contar líneas de archivos

Este artículo es parte de la serie de tutoriales en curso sobre el comando sed de Unix. En nuestros artículos anteriores, aprendimos sed con comandos únicos:imprimir, eliminar, sustituir y escribir archivos.

Sed proporciona muchos comandos para realizar varias operaciones con las líneas de un archivo.

En este artículo, revisemos cómo agregar, insertar, reemplazar una línea en un archivo y cómo obtener los números de línea de un archivo.

  • Anexar líneas
  • Insertar líneas
  • Reemplazar líneas
  • Contar líneas

Primero creemos el archivo geekstuff.txt que se usará en todos los ejemplos mencionados a continuación.

$cat thegeekstuff.txt
Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.

Agregar líneas usando el comando Sed

Sed proporciona el comando "a" que agrega una línea después de cada línea con la dirección o el patrón.

Syntax:

#sed 'ADDRESS a\
	Line which you want to append' filename

#sed '/PATTERN/ a\
	Line which you want to append' filename

Ejemplo 1 de adición de Sed. Agregue una línea después de la tercera línea del archivo.

Agregue la línea "Aparatos y sitios web geniales" después de la tercera línea. El comando sed "a" inserta la línea después de la coincidencia.

$ sed '3 a\
> Cool gadgets and websites' thegeekstuff.txt

Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Cool gadgets and websites
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.

Sed Append Example 2. Agregue una línea después de cada línea que coincida con el patrón

El siguiente comando sed agregará la línea "Linux Scripting" después de cada línea que coincida con el patrón "Sysadmin".

$ sed '/Sysadmin/a \
> Linux Scripting' thegeekstuff.txt

Linux Sysadmin
Linux Scripting
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.
Linux Scripting

Sed Append Example 3. Agregue una línea al final del archivo

El siguiente ejemplo agrega la línea "Diseño de sitio web" al final del archivo.

$ sed '$ a\
> Website Design' thegeekstuff.txt

Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.
Website Design

Insertar líneas usando el comando Sed

El comando Sed "i" se usa para insertar una línea antes de cada línea con el rango o patrón.

Syntax:

#sed 'ADDRESS i\
	Line which you want to insert' filename

#sed '/PATTERN/ i\
	Line which you want to insert' filename

Ejemplo de inserción de Sed 1. Agregue una línea antes de la cuarta línea de la línea.

Agregue una línea "Aparatos y sitios web geniales" antes de la cuarta línea. El comando "a" inserta la línea después de la coincidencia, mientras que "i" inserta antes de la coincidencia.

$ sed '4 i\
> Cool gadgets and websites' thegeekstuff.txt

Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Cool gadgets and websites
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.

Ejemplo 2 de inserción de Sed. Inserta una línea antes de cada línea con el patrón

El siguiente comando sed agregará una línea "Linux Scripting" antes de cada línea que coincida con el patrón llamado "Sysadmin".

$ sed '/Sysadmin/i \
> Linux Scripting' thegeekstuff.txt

Linux Scripting
Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Linux Scripting
Windows- Sysadmin, reboot etc.

Ejemplo de inserción de Sed 3. Inserte una línea antes de la última línea del archivo.

Agregue una línea "Diseño del sitio web" antes de la última línea del archivo.

$ sed '$ i\
> Website Design' thegeekstuff.txt

Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Website Design
Windows- Sysadmin, reboot etc.

Reemplazar líneas usando el comando Sed

El comando "c" en sed se usa para reemplazar cada línea que coincida con el patrón o rangos con la nueva línea dada.

Syntax:

#sed 'ADDRESS c\
	new line' filename

#sed '/PATTERN/ c\
	new line' filename

Ejemplo 1 de reemplazo de Sed. Reemplace una primera línea del archivo

El siguiente comando reemplaza la primera línea del archivo con "The Geek Stuff".

$ sed '1 c\
> The Geek Stuff' thegeekstuff.txt

The Geek Stuff
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.

Ejemplo 2 de reemplazo de Sed. Reemplace una línea que coincida con el patrón

Reemplace todas las líneas que tengan un patrón "Linux Sysadmin" por "Linux Sysadmin - Scripting".

$ sed '/Linux Sysadmin/c \
> Linux Sysadmin - Scripting' thegeekstuff.txt

Linux Sysadmin - Scripting
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Windows- Sysadmin, reboot etc.

Ejemplo 3 de reemplazo de Sed. Reemplace la última línea del archivo

El comando Sed que se proporciona a continuación reemplaza la última línea del archivo con "Última línea del archivo".

$ sed '$ c\
> Last line of the file' thegeekstuff.txt

Linux Sysadmin
Databases - Oracle, mySQL etc.
Security (Firewall, Network, Online Security etc)
Storage in Linux
Productivity (Too many technologies to explore, not much time available)
Last line of the file

Imprimir números de línea usando el comando Sed

“=” es un comando en sed para imprimir el número de línea actual en la salida estándar.

Syntax:

#sed '=' filename

La sintaxis del comando de envío anterior imprime el número de línea en la primera línea y la línea original del archivo en la línea siguiente.

El comando sed '=' acepta solo una dirección, por lo que si desea imprimir el número de línea para un rango de líneas, debe usar las llaves.

Syntax:

# sed -n '/PATTERN/,/PATTERN/ {
=
p
}' filename

Ejemplo de número de línea Sed 1. Encuentre el número de línea que contiene el patrón

El siguiente comando sed imprime el número de línea que coincide con el patrón "Bases de datos"

$ sed -n '/Databases/=' thegeekstuff.txt

2

Ejemplo 2 de número de línea Sed. Rango de impresión de números de línea

Imprima los números de línea para las coincidencias de líneas del patrón "Oracle" a "Productividad".

$ sed -n '/Oracle/,/Productivity/{
> =
> p
> }' thegeekstuff.txt

2
Databases - Oracle, mySQL etc.
3
Security (Firewall, Network, Online Security etc)
4
Storage in Linux
5
Productivity (Too many technologies to explore, not much time available)

Ejemplo 3 de número de línea Sed. Imprime el número total de líneas en un archivo

El número de línea de la última línea del archivo será el total de líneas en un archivo. Patrón $ especifica la última línea del archivo.

$ sed -n '$=' thegeekstuff.txt

6

Linux
  1. Cómo contar el número de líneas en un archivo en Linux (ejemplos de comandos wc y nl)

  2. Cómo contar líneas en un archivo en UNIX/Linux

  3. ¿Comando rápido de Unix para mostrar líneas específicas en medio de un archivo?

  4. sed:¿cómo reemplazar la línea si se encuentra o agregar al final del archivo si no se encuentra?

  5. reemplazar líneas en un archivo con líneas en otro por número de línea

Tutorial de Unix Sed:Impresión de líneas de archivos usando direcciones y patrones

Tutorial de Unix Sed:busque y reemplace texto dentro de un archivo usando RegEx

Tutorial de Unix Sed:eliminar líneas de archivos usando direcciones y patrones

Tutorial de Unix Sed:Cómo escribir en un archivo usando Sed

Tutorial de Unix Sed:operación de archivos de varias líneas con 6 ejemplos prácticos

Cómo usar Sed para buscar y reemplazar una cadena en un archivo