50 ejemplos de comandos `sed`

`sed` es una característica útil de procesamiento de texto de GNU / Linux. La forma completa de `sed` es Stream Editor. Muchos tipos de tareas de procesamiento de texto simples y complicadas se pueden realizar muy fácilmente usando el comando `sed`. Se puede buscar, reemplazar y eliminar cualquier cadena en particular en un texto o archivo usando una expresión regular con el comando `sed. Pero este comando realiza todo tipo de modificaciones temporalmente y el contenido del archivo original no se cambia de forma predeterminada. El usuario puede almacenar el contenido modificado en otro archivo si es necesario. Los usos básicos del comando `sed` se explican en este tutorial usando 50 ejemplos únicos.

Antes de comenzar este tutorial, debe verificar la versión instalada de `sed` en su sistema operativo ejecutando el siguiente comando. El tutorial está diseñado en base a GNU sed. Por lo tanto, se requerirá esta versión de `sed` para practicar los ejemplos que se muestran en este tutorial.

$ sed –version

El siguiente resultado muestra que GNU Sed de la versión 4.4 está instalado en el sistema.

Sintaxis:

sed [options]…  [script] [file]

Si no se proporciona un nombre de archivo con el comando `sed`, el script funcionará con datos de entrada estándar. El script `sed` se puede ejecutar sin ninguna opción.

Contenido :

  1. Sustitución de texto básica usando ‘sed’
  2. Reemplace todas las instancias de un texto en una línea particular de un archivo usando la opción ‘g’
  3. Reemplazar la segunda aparición solo de una coincidencia en cada línea
  4. Reemplazar la última aparición solo de una coincidencia en cada línea
  5. Reemplazar la primera coincidencia en un archivo con texto nuevo
  6. Reemplazar la última coincidencia en un archivo con texto nuevo
  7. Escapar de la barra invertida en los comandos de reemplazo para administrar la búsqueda y reemplazo de rutas de archivo
  8. Reemplace la ruta completa de todos los archivos con solo el nombre de archivo sin directorio
  9. Sustituya el texto, pero solo si se encuentra algún otro texto en la cadena
  10. Sustituya el texto, pero solo si no se encuentra otro texto en la cadena
  11. Agregue una cadena antes después del patrón coincidente usando ‘ \ 1
  12. Eliminar líneas coincidentes
  13. Eliminar la línea coincidente y 2 líneas después de la línea coincidente
  14. Eliminar todos los espacios al final de la línea de texto
  15. Elimine todas las líneas que tengan una coincidencia dos veces en la línea
  16. Eliminar todas las líneas que tienen el único espacio en blanco
  17. Eliminar todos los caracteres no imprimibles
  18. Si hay una coincidencia en la línea, agregue algo al final de la línea.
  19. Si hay una coincidencia en la línea, inserte la línea antes de la coincidencia
  20. Si hay una coincidencia en la línea, inserte una línea después de la coincidencia
  21. Si no hay una coincidencia, agregue algo al final de la línea.
  22. Si no hay coincidencia, elimine la línea.
  23. Duplique el texto coincidente después de agregar un espacio después del texto
  24. Reemplazar una de una lista de cadenas con la nueva cadena
  25. Reemplazar una cadena coincidente con una cadena que contiene nuevas líneas
  26. Elimine las líneas nuevas del archivo e inserte una coma al final de cada línea
  27. Quite las comas y agregue nuevas líneas para dividir el texto en varias líneas
  28. Encuentra coincidencias que no distinguen entre mayúsculas y minúsculas y elimina la línea
  29. Encuentra coincidencias que no distinguen entre mayúsculas y minúsculas y reemplaza con texto nuevo
  30. Encuentre coincidencias que no distingan entre mayúsculas y minúsculas y reemplácelas con mayúsculas del mismo texto
  31. Encuentre coincidencias que no distingan entre mayúsculas y minúsculas y reemplácelas con minúsculas del mismo texto
  32. Reemplazar todos los caracteres en mayúscula en el texto con caracteres en minúscula
  33. Busque el número en la línea y agregue el símbolo de moneda después del número
  34. Agregue comas a los números que tienen más de 3 dígitos
  35. Reemplazar los caracteres de tabulación con 4 caracteres de espacio
  36. Reemplazar 4 caracteres de espacio consecutivos con un carácter de tabulación
  37. Truncar todas las líneas a los primeros 80 caracteres
  38. Busque una expresión regular de cadena y agregue un texto estándar después de ella
  39. Busque una expresión regular de cadena y una segunda copia de la cadena encontrada después de ella
  40. Ejecución de scripts `sed` de varias líneas desde un archivo
  41. Haga coincidir un patrón de varias líneas y reemplácelo con un nuevo texto de varias líneas
  42. Reemplazar el orden de dos palabras que coincidan con un patrón
  43. Utilice varios comandos sed desde la línea de comandos
  44. Combinar sed con otros comandos
  45. Insertar una línea vacía en un archivo
  46. Elimina todos los caracteres alfanuméricos de cada línea de un archivo.
  47. Use ‘&amp’ para hacer coincidir la cadena
  48. Cambiar par de palabras
  49. Ponga en mayúscula el primer carácter de cada palabra
  50. Imprimir números de línea del archivo

1. Sustitución de texto básica con “sed”

Se puede buscar y reemplazar cualquier parte particular de un texto usando el patrón de búsqueda y reemplazo usando el comando `sed`. En el siguiente ejemplo, ‘s’ indica la tarea de buscar y reemplazar. La palabra “Bash” se buscará en el texto, “Bash Scripting Language” y, si la palabra existe en el texto, será reemplazada por la palabra “Perl”.

$ echo “Bash Scripting Language” | sed ‘s/Bash/Perl/’

Producción:

La palabra ‘Bash’ existe en el texto. Entonces, la salida es ‘Perl Scripting Language’.

El comando `sed` también se puede usar para sustituir cualquier parte del contenido de un archivo. Cree un archivo de texto llamado weekday.txt con el siguiente contenido.

weekday.txt

Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

El siguiente comando buscará y reemplazará el texto ‘Domingo’ por el texto ‘El domingo es feriado’.

$ cat weekday.txt
$ sed ‘s/Sunday/Sunday is holiday/’ weekday.txt

Producción:

‘Sunday’ existe en el archivo weekday.txt y esta palabra se reemplaza por el texto, ‘Sunday is holiday’ después de ejecutar el comando `sed` anterior.

Ve arriba

2. Reemplazar todas las instancias de un texto en una línea particular de un archivo usando la opción ‘g’

La opción ‘g’ se usa en el comando `sed` para reemplazar todas las apariciones de patrones coincidentes. Cree un archivo de texto llamado python.txt con el siguiente contenido para conocer el uso de la opción ‘g’. Este archivo contiene la palabra. ‘Python’ varias veces.

python.txt

Python es un lenguaje muy popular.
Python es fácil de usar. Python es fácil de aprender.
Python es un lenguaje multiplataforma

El siguiente comando reemplazará todas las apariciones de ‘ Python ‘ en la segunda línea del archivo, python.txt . Aquí, ‘Python’ aparece dos veces en la segunda línea.

$ cat python.txt
$ sed ‘2 s/Python/perl/g’ python.txt

Producción:

La siguiente salida aparecerá después de ejecutar el script. Aquí, todas las apariciones de ‘Python’ en la segunda línea se reemplazan por ‘Perl’.

Ve arriba

3. Reemplace la segunda aparición solo de una coincidencia en cada línea

Si alguna palabra aparece varias veces en un archivo, la aparición particular de la palabra en cada línea se puede reemplazar usando el comando `sed` con el número de ocurrencia. El siguiente comando `sed` reemplazará la segunda aparición del patrón de búsqueda en cada línea del archivo, python.txt .

$ sed ‘s/Python/perl/g2’ python.txt

Producción:

La siguiente salida aparecerá después de ejecutar el comando anterior. Aquí, el texto de búsqueda, ‘ Python’ aparece dos veces solo en la segunda línea y es reemplazado por el texto, ‘ Perl ‘.

Ve arriba

4. Reemplace la última aparición solo de una coincidencia en cada línea

Cree un archivo de texto llamado lang.txt con el siguiente contenido.

lang.txt

Lenguaje de programación Bash. Lenguaje de programación Python. Lenguaje de programación Perl.
Lenguaje de marcado de hipertexto.
Lenguaje de marcado extensible.

$ sed ‘s/\(.*\)Programming/\1Scripting/’ lang.txt

Ve arriba

5. Reemplace la primera coincidencia en un archivo con texto nuevo

El siguiente comando reemplazará solo la primera coincidencia del patrón de búsqueda, ‘ Python ‘ por el texto, ‘perl ‘. Aquí, ‘1’ se usa para coincidir con la primera aparición del patrón.

$ cat python.txt
$ sed ‘1 s/Python/perl/’ python.txt

Producción:

La siguiente salida aparecerá después de ejecutar los comandos anteriores. Aquí. la primera aparición de ‘Python’ en la primera línea se reemplaza por ‘perl’.

Ve arriba

6. Reemplace la última coincidencia en un archivo con texto nuevo

El siguiente comando reemplazará la última aparición del patrón de búsqueda, ‘Python ‘ por el texto, ‘Bash’. Aquí, el símbolo ‘$’ se usa para coincidir con la última aparición del patrón.

$ cat python.txt
$ sed -e ‘$s/Python/Bash/’ python.txt

Producción:

La siguiente salida aparecerá después de ejecutar los comandos anteriores.

Ve arriba

7. Escapar de la barra invertida en los comandos de reemplazo para administrar la búsqueda y reemplazo de rutas de archivo

Es necesario escapar de la barra invertida en la ruta del archivo para buscar y reemplazar. El siguiente comando de `sed` agregará una barra invertida (\) en la ruta del archivo.

$ echo /home/ubuntu/code/perl/add.pl | sed ‘s/\\/g’

Producción:

La ruta del archivo, ‘/home/ubuntu/code/perl/add.pl’ se proporciona como entrada en el comando `sed` y la siguiente salida aparecerá después de ejecutar el comando anterior.

Ve arriba

8. Reemplace la ruta completa de todos los archivos con solo el nombre de archivo sin directorio

El nombre del archivo se puede recuperar de la ruta del archivo muy fácilmente usando el comando ` basename` . El comando `sed` también se puede usar para recuperar el nombre de archivo de la ruta del archivo. El siguiente comando recuperará el nombre del archivo solo de la ruta del archivo proporcionada por el comando `echo`.

$ echo “/home/ubuntu/temp/myfile.txt” | sed ‘s/.*\///’

Producción:

La siguiente salida aparecerá después de ejecutar el comando anterior. Aquí, el nombre del archivo, ‘ myfile.txt’ se imprime como salida.

Ve arriba

9. Sustituya el texto, pero solo si se encuentra algún otro texto en la cadena.

Cree un archivo llamado ‘ dept.txt’ con el siguiente contenido para reemplazar cualquier texto basado en otro texto.

dept.txt

Lista de estudiantes totales:

CSE – Count
EEE – Count
Civil – Count

Se utilizan dos comandos de reemplazo en el siguiente comando `sed`. Aquí, el texto ‘ Count ‘ será reemplazado por 100  en la línea que contiene el texto, ‘CSE ‘ y el texto ‘ Count’ será reemplazado por 70 en la línea que contiene el patrón de búsqueda, ‘ EEE’ .

$ cat dept.txt
$ sed  -e ‘/CSE/ s/Count/100/ /EEE/ s/Count/70/’ dept.txt

Producción:

La siguiente salida aparecerá después de ejecutar los comandos anteriores.

Ve arriba

10. Sustituya el texto, pero solo si no se encuentra otro texto en la cadena.

El siguiente comando `sed` reemplazará el valor de ‘Count’ en la línea que no contiene el texto, ‘CSE’. El archivo dept.txt contiene dos líneas que no contienen el texto, ‘CSE’. Entonces, el texto Recuento ‘ será reemplazado por 80 en dos líneas.

$ cat dept.txt
$ sed -i -e ‘/CSE/! s/Count/80/’ dept.txt

Producción:

La siguiente salida aparecerá después de ejecutar los comandos anteriores.

Ve arriba

11. Agregue una cadena antes y después del patrón coincidente usando ‘\ 1’

La secuencia de patrones coincidentes del comando `sed` se indica con ‘\ 1’, ‘\ 2’ y así sucesivamente. El siguiente comando `sed` buscará el patrón, ‘Bash’ y si el patrón coincide, se accederá mediante ‘\ 1 ′ en la parte de reemplazo de texto. Aquí, el texto, ‘Bash’ se busca en el texto de entrada y, se agrega un texto antes y se agrega otro texto después de ‘\ 1’.

$ echo “Bash language” | sed  ‘s/\(Bash\)/Learn \1 programming/’

Producción:

La siguiente salida aparecerá después de ejecutar el comando anterior. Aquí, el texto Aprender’ se agrega antes de ‘Bash’ y el texto de programación ‘ se agrega después de ‘ Bash’.

Ve arriba

12. Eliminar líneas coincidentes

La opción ‘d’ se usa en el comando `sed` para eliminar cualquier línea del archivo. Cree un archivo llamado os.txt y agregue el siguiente contenido para probar la función de la opción ‘d’ .

cat os.txt                                                                              

Windows
Linux
Android
OS

El siguiente comando `sed` eliminará esas líneas del archivo os.txt que contiene el texto, ‘OS’.

$ cat os.txt
$ sed ‘/OS/d’ os.txt

Producción:

La siguiente salida aparecerá después de ejecutar los comandos anteriores.

Ve arriba

13. Elimine la línea coincidente y 2 líneas después de la línea coincidente

El siguiente comando eliminará tres líneas del archivo os.txt si se encuentra el patrón, ‘ Linux’ . os.txt contiene el texto ‘Linux ‘ en la segunda línea. Entonces, esta línea y las siguientes dos líneas serán eliminadas.

$ sed ‘/Linux/,+2d’ os.txt

Producción:

La siguiente salida aparecerá después de ejecutar el comando anterior.

Ve arriba

14. Elimina todos los espacios al final de la línea de texto.

El uso de la clase [: en blanco:] se puede utilizar para eliminar espacios y tabulaciones del texto o del contenido de cualquier archivo. El siguiente comando eliminará los espacios al final de cada línea del archivo, os.txt. 

$ cat os.txt
$ sed ‘s/[[:blank:]]*$//’ os.txt

Producción:

os.txt contiene líneas vacías después de cada línea que son eliminadas por el comando `sed` anterior.

Ve arriba

15. Elimine todas las líneas que tengan una coincidencia dos veces en la línea.

Cree un archivo de texto llamado input.txt con el siguiente contenido y elimine esas líneas del archivo que contiene el patrón de búsqueda dos veces.

input.txt

PHP es un lenguaje de programación del lado del servidor.
PHP es un lenguaje de código abierto y PHP distingue entre mayúsculas y minúsculas.
PHP es independiente de la plataforma.

El texto ‘PHP’ contiene dos tiempos en la segunda línea del archivo, input.txt . En este ejemplo se utilizan dos comandos `sed` para eliminar las líneas que contienen el patrón ‘ php ‘ dos veces. El primer comando `sed` reemplazará la segunda aparición de ‘php’ en cada línea por ‘ dl ‘ y enviará la salida al segundo comando` sed` como entrada. El segundo comando `sed` eliminará las líneas que contienen el texto, ‘ dl ‘.

$ cat input.txt
$ sed  ‘s/php/dl/i2t’ input.txt | sed ‘/dl/d’

Producción:

El archivo input.txt tiene dos líneas que contienen el patrón, ‘php’ dos veces. Entonces, la siguiente salida aparecerá después de ejecutar los comandos anteriores.

Ve arriba

16. Elimina todas las líneas que solo tengan espacios en blanco.

Seleccione cualquier archivo que contenga líneas vacías en el contenido para probar este ejemplo. El archivo input.txt que se creó en el ejemplo anterior, contiene dos líneas vacías que se pueden eliminar usando el siguiente comando `sed`. Aquí, ‘^ $’ se usa para encontrar las líneas vacías en el archivo, input.txt.

$ cat input.txt
$ sed ‘/^$/d’ input.txt

Producción:

La siguiente salida aparecerá después de ejecutar los comandos anteriores.

Ve arriba

17. Elimina todos los caracteres no imprimibles.

Los caracteres no imprimibles se pueden eliminar de cualquier texto reemplazando los caracteres no imprimibles por ninguno. La clase [: print:] se usa en este ejemplo para encontrar los caracteres no imprimibles. ‘\ t’ es un carácter no imprimible y no puede ser analizado directamente por el comando `echo`. Para esto, se asigna el carácter ‘\ t’ en una variable, $ tab que se usa en un comando `echo`. La salida del comando `echo` se envía en el comando` sed` que eliminará el carácter ‘\ t’ de la salida.

$ tab=$‘\t’
$ echo “Hello$tabWorld
$ echo “Hello$tabWorld | sed ‘s/[^[:print:]]//g’

Producción:

La siguiente salida aparecerá después de ejecutar los comandos anteriores. El primer comando `echo imprimirá el resultado con un espacio de tabulación y el comando` sed` imprimirá el resultado después de eliminar el espacio de tabulación.

Ve arriba

18. Si hay una coincidencia en la línea, agregue algo al final de la línea.

El siguiente comando agregará ’10’ al final de la línea que contiene el texto, ‘Windows’ en el archivo os.txt .

$ cat os.txt
$ sed ‘/Windows/ s/$/ 10/’ os.txt

Producción:

La siguiente salida aparecerá después de ejecutar el comando.

Ve arriba

19. Si hay una coincidencia en la línea, inserte una línea antes del texto.

El siguiente comando `sed` buscará el texto, ‘ PHP es independiente de la plataforma’ en el archivo input.txt que se creó antes. Si el archivo contiene este texto en cualquier línea, se insertará PHP es un lenguaje interpretado’ antes de esa línea.

$ cat input.txt
$ sed ‘/PHP is platform-independent/ s/^/PHP is an interpreted language.\n/’ input.txt

Producción:

La siguiente salida aparecerá después de ejecutar los comandos anteriores.

Ve arriba

20. Si hay una coincidencia en la línea, inserte una línea después de esa línea.

El siguiente comando `sed` buscará el texto, ‘ Linux’ en el archivo os.txt y si el texto existe en cualquier línea, entonces se insertará un nuevo texto, ‘ Ubuntu ‘ después de esa línea.

$ cat os.txt
$ sed ‘s/Linux/&amp\nUbuntu/’ os.txt

Producción:

La siguiente salida aparecerá después de ejecutar los comandos anteriores.

Ve arriba

21. Si no hay coincidencia, agregue algo al final de la línea.

El siguiente comando `sed` buscará aquellas líneas en os.txt que no contengan el texto, ‘Linux’ y agregará el texto, ‘ Sistema operativo ‘ al final de cada línea. Aquí, el símbolo $ ‘ se usa para identificar la línea donde se agregará el nuevo texto.

$ cat os.txt
$ sed ‘/Linux/! S/$/ Operating System/’ os.txt

Producción:

La siguiente salida aparecerá después de ejecutar los comandos anteriores. Existen tres líneas en el archivo os.txt que no contienen el texto, ‘Linux’ y el nuevo texto que se agrega al final de estas líneas.

Ve arriba

22. Si no hay coincidencia, elimine la línea.

Cree un archivo llamado web.txt y agregue el siguiente contenido y elimine las líneas que no contienen el patrón coincidente. web.txt  HTML 5JavaScriptCSSPHPMySQLJQuery El siguiente comando `sed` buscará y eliminará aquellas líneas que no contienen el texto, ‘CSS’. $ cat web.txt $ sed ‘/ CSS /! d’ web.txt  Salida:  La siguiente salida aparecerá después de ejecutar los comandos anteriores. Existe una línea en el archivo que contiene el texto, ‘CSE’. Entonces, la salida contiene solo una línea.

Ve arriba

23. Duplique el texto coincidente después de agregar un espacio después del texto

El siguiente comando `sed` buscará la palabra, ‘to’ en el archivo, python.txt y, si la palabra existe, se insertará la misma palabra después de la palabra de búsqueda agregando espacio. Aquí, el símbolo ‘&amp’ se usa para agregar el texto duplicado.

$ cat python.txt
$ sed -e ‘s/to /&amp to/g’ python.txt

Producción:

La siguiente salida aparecerá después de ejecutar los comandos. Aquí, la palabra ‘a’ se busca en el archivo, python.txt y esta palabra existe en la segunda línea de este archivo. Entonces, ‘a ‘ con espacio se agrega después del texto coincidente.

Ve arriba

24. Reemplaza una lista de cadenas con la nueva cadena

Debe crear dos archivos de lista para probar este ejemplo. Cree un archivo de texto llamado list1.txt y agregue el siguiente contenido.

cat list1.txt

1001=&gt Jafar Ali
1023=&gt Nir Hossain
1067=&gt John Michel

Cree un archivo de texto llamado list2.txt y agregue el siguiente contenido.

$ cat list2.txt

1001    CSE     GPA-3.63
1002    CSE     GPA-3.24
1023    CSE     GPA-3.11
1067    CSE     GPA-3.84

El siguiente comando `sed` coincidirá con la primera columna de los dos archivos de texto que se muestran arriba y reemplazará el texto coincidente con el valor de la tercera columna del archivo list1.txt.

$ cat list1.txt
$ cat list2.txt
$ sed `cat list1.txt | awk ‘{print “-e s/”$1″/”$3″/”}’`&lt&lt&lt` cat list2.txt`

Producción:

1001, 1023 y 1067 del archivo list1.txt coinciden con los tres datos del archivo list2.txt y estos valores se reemplazan por los nombres correspondientes de la tercera columna de list1.txt .

Ve arriba

25. Reemplace la cadena coincidente con una cadena que contenga líneas nuevas

El siguiente comando tomará la entrada del comando `echo` y buscará la palabra ‘Python’ en el texto. Si la palabra existe en el texto , se insertará un nuevo texto, “Texto agregado” con una nueva línea. $ echo “Bash Perl Python Java PHP ASP” | sed ‘s / Python / Texto agregado \ n /’  Salida:  La siguiente salida aparecerá después de ejecutar el comando anterior.

Ve arriba

26. Elimine las líneas nuevas del archivo e inserte una coma al final de cada línea.

El siguiente comando `sed` reemplazará cada nueva línea por una coma en el archivo os.txt . Aquí, la opción -z se usa para separar la línea por el carácter NULL.

$ sed -z ‘s/\n/,/g’ os.txt

Producción:

La siguiente salida aparecerá después de ejecutar el comando anterior.

Ve arriba

27. Quite las comas y agregue una nueva línea para dividir el texto en varias líneas

El siguiente comando `sed` tomará la línea separada por comas del comando` echo` como entrada y reemplazará la coma por una nueva línea.

$ echo “Kaniz Fatema,30th,batch” | sed “s/,/\n/g”

Producción:

La siguiente salida aparecerá después de ejecutar el comando anterior. El texto de entrada contiene tres datos separados por comas que se reemplazan por una nueva línea y se imprimen en tres líneas.

Ve arriba

28. Busque coincidencias que no distingan entre mayúsculas y minúsculas y elimine la línea

‘I’ se usa en el comando `sed` para la coincidencia que no distingue entre mayúsculas y minúsculas que indica ignorar mayúsculas y minúsculas. El siguiente comando `sed` buscará la línea que contiene la palabra ‘linux ‘ y borrará la línea del archivo os.txt .

$ cat os.txt
$ sed ‘/linux/Id’ os.txt

Producción:

La siguiente salida aparecerá después de ejecutar el comando anterior. os.txt contiene la palabra ‘Linux’ que coincide con el patrón, ‘linux’ para búsquedas que no distinguen entre mayúsculas y minúsculas y se elimina.

Ve arriba

29. Busque coincidencias que no distingan entre mayúsculas y minúsculas y reemplácelas con texto nuevo

El siguiente comando `sed` tomará la entrada del comando` echo` y reemplazará la palabra ‘bash’ por la palabra ‘PHP’.

$ echo “I like bash programming “ | sed ‘s/Bash/PHP/i’

Producción:

La siguiente salida aparecerá después de ejecutar el comando anterior. Aquí, la palabra ‘Bash’ coincidió con la palabra ‘bash’ para una búsqueda que no distingue entre mayúsculas y minúsculas y se reemplazó por la palabra ‘PHP’.

Ve arriba

30. Busque coincidencias que no distingan entre mayúsculas y minúsculas y reemplácelas con mayúsculas del mismo texto

‘\ U’ se usa en ‘sed` para convertir cualquier texto a letras mayúsculas. El siguiente comando `sed` buscará la palabra, ‘linux ‘ en el archivo os.txt y, si la palabra existe, la reemplazará con todas las letras mayúsculas.

$ cat os.txt
$ sed ‘s/\(linux\)/\U\1/Ig’ os.txt

Producción:

La siguiente salida aparecerá después de ejecutar los comandos anteriores. La palabra ‘Linux’ del archivo os.txt se reemplaza por la palabra ‘LINUX’.

Ve arriba

31. Busque coincidencias que no distingan entre mayúsculas y minúsculas y reemplácelas con todas las minúsculas del mismo texto

‘\ L’ se usa en ‘sed` para convertir cualquier texto a letras minúsculas. El siguiente comando `sed` buscará la palabra ‘Linux’ en el archivo os.txt y reemplazará la palabra por letras minúsculas.

$ cat os.txt
$ sed ‘s/\(linux\)/\L\1/Ig’ os.txt

Producción:

La siguiente salida aparecerá después de ejecutar los comandos anteriores. La palabra ‘Linux’ se reemplaza por la palabra ‘linux’ aquí.

Ve arriba

32. Reemplace todos los caracteres en mayúscula del texto por caracteres en minúscula

El siguiente comando `sed` buscará todos los caracteres en mayúsculas en el archivo os.txt y reemplazará los caracteres por letras minúsculas usando ‘\ L’.

$ cat os.txt
$ sed  ‘s/\(.*\)/\L\1/’ os.txt

Producción:

La siguiente salida aparecerá después de ejecutar los comandos anteriores.

Ve arriba

33. Busque el número en la línea y agregue cualquier símbolo de moneda antes del número

Cree un archivo llamado items.txt con el siguiente contenido.

items.txt

HDD       100
Monitor   80
Mouse     10

El siguiente comando `sed` buscará el número en cada línea del archivo items.txt y agregará el símbolo de moneda, ‘$’ antes de cada número.

$ cat items.txt
$ sed ‘s/\([0-9]\)/$\1/g’ items.txt

Producción:

La siguiente salida aparecerá después de ejecutar los comandos anteriores. Aquí, el símbolo ‘$’ se agrega antes del número de cada línea.

Ve arriba

34. Agrega comas a los números que tienen más de 3 dígitos.

El siguiente comando `sed` tomará un número como entrada del comando` echo` y agregará una coma después de cada grupo de tres dígitos contando desde la derecha. Aquí, ‘: a’ indica la etiqueta y ‘ta’ se usa para iterar el proceso de agrupación.

$ echo “5098673” | sed -e :a -e ‘s/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/ta’

Producción:

El número 5098673 se da en el comando `echo` y el comando` sed` generó el número 5,098,673 agregando una coma después de cada grupo de tres dígitos.

Ve arriba

35. Reemplaza el carácter de tabulación con 4 caracteres de espacio.

El siguiente comando `sed` reemplazará cada carácter de tabulación (\ t) por cuatro caracteres de espacio. El símbolo ‘$’ se usa en el comando `sed` para que coincida con el carácter de tabulación y ‘g’ se usa para reemplazar todos los caracteres de tabulación.

$ echo -e “1\t2\t3″ | sed $‘s/\t/    /g’

Producción:

La siguiente salida aparecerá después de ejecutar el comando anterior.

Ve arriba

36. Reemplaza 4 caracteres de espacio consecutivos con un carácter de tabulación.

El siguiente comando reemplazará 4 caracteres consecutivos con el carácter de tabulación (\ t).

$ echo -e “1    2” | sed $‘s/    /\t/g’

Producción:

La siguiente salida aparecerá después de ejecutar el comando anterior.

Ve arriba

37. Truncar todas las líneas a los primeros 80 caracteres

Cree un archivo de texto llamado in.txt que contenga las líneas de más de 80 caracteres para probar este ejemplo.

in.txt

PHP es un lenguaje de programación del lado del servidor.
PHP es un lenguaje de código abierto y PHP distingue entre mayúsculas y minúsculas. PHP es independiente de la plataforma.
El siguiente comando `sed` truncará cada línea del archivo in.txt en 80 caracteres.

$ cat in.txt
$ sed ‘s/\(^.\{1,80\}\).*/\1/’ in.txt

Producción:

La siguiente salida aparecerá después de ejecutar los comandos anteriores. La segunda línea del archivo in.txt contiene más de 80 caracteres y esta línea está truncada en la salida.

Ve arriba

38. Busque una expresión regular de cadena y agregue un texto estándar después de ella

El siguiente comando `sed` buscará el texto, ‘ hola ‘ en el texto de entrada y agregará el texto, ‘ John ‘ después de ese texto.

$ echo “hello, how are you?” | sed ‘s/\(hello\)/\1 John/’

Producción:

La siguiente salida aparecerá después de ejecutar el comando anterior.

Ve arriba

39. Busque una expresión regular de cadena y agregue algo de texto después de la segunda coincidencia en cada línea

El siguiente comando `sed` buscará el texto, ‘ PHP ‘ en cada línea de input.txt y reemplazará la segunda coincidencia en cada línea con el texto, ‘Nuevo texto agregado’ .

$ cat input.txt
sed ‘s/\(PHP\)/\1 (New Text added)/2’ input.txt

Producción:

La siguiente salida aparecerá después de ejecutar los comandos anteriores. El texto de búsqueda, ‘ PHP ‘ aparece dos veces en la segunda y tercera línea del archivo input.txt . Entonces, el texto, ‘ Nuevo texto agregado ‘ se inserta en la segunda y tercera líneas.

Ve arriba

40. Ejecución de scripts `sed` de varias líneas desde un archivo

Se pueden almacenar varios scripts `sed` en un archivo y todos los scripts se pueden ejecutar juntos ejecutando el comando` sed`. Cree un archivo llamado ‘sedcmd ‘ y agregue el siguiente contenido. Aquí, se agregan dos scripts `sed` en el archivo. Un script reemplazará el texto, ‘ PHP ‘ por ‘ASP ‘, otro script reemplazará el texto, ‘ independiente ‘ por el texto, ‘ dependiente ‘.

sedcmd

s/PHP/ASP/
s/independent/dependent/

El siguiente comando `sed` reemplazará todo el texto de ‘PHP’ e ‘independiente’ por ‘ASP’ y ‘dependiente’. Aquí, la opción ‘-f’ se usa en el comando `sed` para ejecutar el script` sed` desde el archivo.

$ cat sedcmd
$ sed -f sedcmd  input.txt

Producción:

La siguiente salida aparecerá después de ejecutar los comandos anteriores.

Ve arriba

41. Haga coincidir un patrón de varias líneas y reemplácelo con un nuevo texto de varias líneas

El siguiente comando `sed` buscará el texto de varias líneas, ‘Linux \ nAndroid’ y si el patrón coincide, las líneas coincidentes serán reemplazadas por el texto de varias líneas, ‘Ubuntu \ nAndroid Lollipop ‘. Aquí, P y D se utilizan para procesamiento multilínea.

$ cat os.txt
$ sed ‘$!Ns/Linux\nAndoid/Ubuntu\nAndoid Lollipop/PD’ os.txt

Producción:

La siguiente salida aparecerá después de ejecutar los comandos anteriores.

Ve arriba

42. Reemplazar el orden de dos palabras en un texto que coincida con un patrón

El siguiente comando `sed` tomará la entrada de dos palabras del comando` echo` y reemplazará el orden de estas palabras.

$ echo “perl python” | sed -e ‘s/\([^ ]*\) *\([^ ]*\)/\2 \1/’

Producción:

La siguiente salida aparecerá después de ejecutar el comando anterior.

Ve arriba

43. Ejecute varios comandos `sed` desde la línea de comandos

La opción ‘-e’ se usa en el comando `sed` para ejecutar múltiples scripts` sed` desde la línea de comando. El siguiente comando `sed` tomará un texto como entrada del comando` echo` y reemplaza ‘ Ubuntu ‘ por ‘ Kubuntu ‘ y ‘ Centos ‘ por ‘ Fedora ‘.

$ echo “Ubuntu Centos Debian” | sed -e ‘s/Ubuntu/Kubuntu/ s/Centos/Fedora/’

Producción:

La siguiente salida aparecerá después de ejecutar el comando anterior. Aquí, ‘Ubuntu’ y ‘Centos’ se reemplazan por ‘Kubuntu’ y ‘Fedora’.

Ve arriba

44. Combinar `sed` con otros comandos

El siguiente comando combinará el comando `sed` con el comando` cat`. El primer comando `sed` tomará la entrada del archivo os.txt y enviará la salida del comando al segundo comando` sed` después de reemplazar el texto ” Linux ‘por’ Fedora ‘. El segundo comando `sed` reemplazará el texto, ‘Windows’ por ‘Windows 10’.

$ cat os.txt | sed ‘s/Linux/Fedora/’| sed ‘s/windows/Windows 10/i’

Producción:

La siguiente salida aparecerá después de ejecutar el comando anterior.

Ve arriba

45. Insertar línea vacía en un archivo

Cree un archivo llamado stdlist con el siguiente contenido.

stdlist

#ID     #Name
[101]   -Ali
[102]   -Neha

La opción ‘G’ se usa para insertar una línea vacía en un archivo. El siguiente comando `sed` insertará líneas vacías después de cada línea del archivo stdlist .

$ cat stdlist
$ sed G stdlist

Producción:

La siguiente salida aparecerá después de ejecutar los comandos anteriores. Se inserta una línea vacía después de cada línea del archivo.

Ve arriba

46. ​​Reemplace todos los caracteres alfanuméricos por espacios en cada línea de un archivo.

El siguiente comando reemplazará todos los caracteres alfanuméricos por espacios en el archivo stdlist .

$ cat stdlist
$sed ‘s/[A-Za-z0-9]//g’ stdlist

Producción:

La siguiente salida aparecerá después de ejecutar los comandos anteriores.

Ve arriba

47. Utilice ‘&amp’ para imprimir una cadena coincidente

El siguiente comando buscará la palabra que comienza con ‘L’ y reemplazará el texto agregando ‘La cadena coincidente es – ‘ con la palabra coincidente usando el símbolo ‘&amp’. Aquí, ‘p’ se usa para imprimir el texto modificado.

$ sed -n ‘s/^L/Matched String is – &amp/p’ os.txt

Producción:

La siguiente salida aparecerá después de ejecutar el comando anterior.

Ve arriba

48. Cambiar par de palabras en un archivo

Cree un archivo de texto llamado course.txt con el siguiente contenido que contiene el par de palabras en cada línea.

course.txt

PHP            ASP
MySQL          Oracle
CodeIgniter    Laravel

El siguiente comando cambiará el par de palabras en cada línea del archivo, course.txt .

$ sed  ‘s/\([^ ]*\) *\([^ ]*\)/\2 \1/’ course.txt

Producción:

La siguiente salida aparecerá después de cambiar el par de palabras en cada línea.

Ve arriba

49. Ponga en mayúscula el primer carácter de cada palabra

El siguiente comando `sed` tomará el texto de entrada del comando` echo` y convertirá el primer carácter de cada palabra en una letra mayúscula.

$ echo “I like bash programming” | sed ‘s/\([a-z]\)\([a-zA-Z0-9]*\)/\u\1\2/g’

Producción:

La siguiente salida aparecerá después de ejecutar el comando anterior. El texto de entrada, “Me gusta la programación bash” se imprime como “Me gusta la programación Bash” después de poner en mayúscula la primera palabra.

Ve arriba

50. Imprime los números de línea del archivo.

El símbolo ‘=’ se usa en el comando `sed` para imprimir el número de línea antes de cada línea de un archivo. El siguiente comando imprimirá el contenido del archivo os.txt con el número de línea.

$ sed ‘=’ os.txt

Producción:

La siguiente salida aparecerá después de ejecutar el comando anterior. Hay cuatro líneas en el archivo os.txt . Entonces, el número de línea se imprime antes de cada línea del archivo.

Ve arriba

Conclusión:

Los diferentes usos del comando `sed` se explican en este tutorial usando ejemplos muy simples. La salida de todos los scripts `sed` mencionados aquí se generan temporalmente y el contenido del archivo original permanece sin cambios. Pero si lo desea, puede modificar el archivo original usando la opción –i o –in-place del comando `sed. Si eres un nuevo usuario de Linux y quieres aprender los usos básicos del comando `sed` para realizar varios tipos de tareas de manipulación de cadenas, este tutorial te ayudará. Después de leer este tutorial, espero que cualquier usuario obtenga un concepto claro sobre las funciones del comando `sed`.

Leave a Comment

Your email address will not be published. Required fields are marked *

Hazlo Linux