El siguiente resultado muestra que GNU Sed de la versión 4.4 está instalado en el sistema.
Sintaxis:
sed [opciones]…[texto] [expediente]
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 :
- Sustitución de texto básica usando 'sed'
- Reemplazar todas las instancias de un texto en una línea particular de un archivo usando la opción 'g'
- Reemplazar la segunda aparición solo de una coincidencia en cada línea
- Reemplazar la última aparición solo de una coincidencia en cada línea
- Reemplazar la primera coincidencia en un archivo con texto nuevo
- Reemplazar la última coincidencia en un archivo con texto nuevo
- Escapar de la barra invertida en los comandos de reemplazo para administrar la búsqueda y reemplazo de rutas de archivo
- Reemplace la ruta completa de todos los archivos con solo el nombre de archivo sin directorio
- Sustituya el texto, pero solo si se encuentra algún otro texto en la cadena
- Sustituya el texto, pero solo si no se encuentra otro texto en la cadena
- Agregue una cadena antes después del patrón coincidente con ' 1 ’
- Eliminar líneas coincidentes
- Eliminar la línea coincidente y 2 líneas después de la línea coincidente
- Eliminar todos los espacios al final de la línea de texto
- Elimine todas las líneas que tengan una coincidencia dos veces en la línea
- Eliminar todas las líneas que tienen el único espacio en blanco
- Eliminar todos los caracteres no imprimibles
- Si hay una coincidencia en la línea, agregue algo al final de la línea.
- Si hay una coincidencia en la línea, inserte la línea antes de la coincidencia
- Si hay una coincidencia en la línea, inserte una línea después de la coincidencia
- Si no hay una coincidencia, agregue algo al final de la línea.
- Si no hay coincidencia, elimine la línea.
- Duplicar texto coincidente después de agregar un espacio después del texto
- Reemplazar una de una lista de cadenas con la nueva cadena
- Reemplazar una cadena coincidente con una cadena que contenga líneas nuevas
- Elimine las líneas nuevas del archivo e inserte una coma al final de cada línea
- Quite las comas y agregue nuevas líneas para dividir el texto en varias líneas
- Encuentra coincidencias que no distinguen entre mayúsculas y minúsculas y elimina la línea
- Encuentre coincidencias que no distingan entre mayúsculas y minúsculas y reemplácelas con texto nuevo
- Encuentre coincidencias que no distingan entre mayúsculas y minúsculas y reemplácelas con todas las mayúsculas del mismo texto
- Encuentre coincidencias que no distingan entre mayúsculas y minúsculas y reemplácelas con todas las minúsculas del mismo texto
- Reemplazar todos los caracteres en mayúsculas en el texto con caracteres en minúsculas
- Busque el número en la línea y agregue el símbolo de moneda después del número
- Agregue comas a los números que tienen más de 3 dígitos
- Reemplazar los caracteres de tabulación con 4 caracteres de espacio
- Reemplazar 4 caracteres de espacio consecutivos con un carácter de tabulación
- Truncar todas las líneas a los primeros 80 caracteres
- Busque una expresión regular de cadena y agregue un texto estándar después de ella
- Busque una expresión regular de cadena y una segunda copia de la cadena encontrada después de ella
- Ejecución de scripts `sed` de varias líneas desde un archivo
- Haga coincidir un patrón de varias líneas y reemplácelo con un nuevo texto de varias líneas
- Reemplazar el orden de dos palabras que coincidan con un patrón
- Utilice varios comandos sed desde la línea de comandos
- Combinar sed con otros comandos
- Insertar una línea vacía en un archivo
- Elimina todos los caracteres alfanuméricos de cada línea de un archivo.
- Utilice '&' para hacer coincidir la cadena
- Cambiar par de palabras
- Ponga en mayúscula el primer carácter de cada palabra
- 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, en el lenguaje de secuencias de comandos Bash y, si la palabra existe en el texto, se reemplazará por la palabra 'Perl'.
$echo 'Lenguaje de secuencias de comandos Bash' | sed 's / Bash / Perl /'
Producción:
La palabra 'Bash' existe en el texto. Entonces, el resultado es 'Perl Scripting Language'.
El comando `sed` también se puede usar para sustituir cualquier parte del contenido de un archivo. Crea un archivo de texto llamado weekday.txt con el siguiente contenido.
weekday.txt
lunesmartes
miércoles
jueves
viernes
sábado
domingo
El siguiente comando buscará y reemplazará el texto 'Domingo' por el texto 'El domingo es feriado'.
$gatoweekday.txt$sed 's / Domingo / Domingo es feriado /'weekday.txt
Producción:
'Domingo' existe en el archivo weekday.txt y esta palabra se reemplaza por el texto 'Domingo es feriado' después de ejecutar el comando 'sed' anterior.
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. Crea 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. 'Pitón' 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 ' Pitón 'En la segunda línea del archivo, python.txt . Aquí, 'Pitón' ocurre dos veces en la segunda línea.
$ gato pitón.TXT$ sed'2 s / Python / perl / g'pitón.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'.
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'pitón.TXTProducción:
La siguiente salida aparecerá después de ejecutar el comando anterior. Aquí, el texto de búsqueda, ' Pitón' aparece dos veces en la segunda línea solamente y se reemplaza por el texto, ' Perl ‘.
4. Reemplace la última aparición solo de una coincidencia en cada línea
Crea 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.
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, ' Pitón 'Por el texto, 'Perl '. Aquí, ‘1’ se utiliza para coincidir con la primera aparición del patrón.
$ gato pitón.TXT$ sed'1 s / Python / perl /'pitón.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'.
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, 'Pitón 'Por el texto, 'Intento'. Aquí, ‘$’ El símbolo se utiliza para coincidir con la última aparición del patrón.
$ gato pitón.TXT$ pero -e'$ s / Python / Bash /'pitón.TXT
Producción:
La siguiente salida aparecerá después de ejecutar los comandos anteriores.
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 /hogar/ubuntu/código/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.
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 ` nombre de base` mando. 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.
9. Sustituya el texto, pero solo si se encuentra algún otro texto en la cadena.
Crea un archivo llamado ' dept.txt ' con el siguiente contenido para reemplazar cualquier texto basado en otro texto.
dept.txt
Lista de estudiantes totales:
CSE - RecuentoEEE - Recuento
Civil - Conde
Se utilizan dos comandos de reemplazo en el siguiente comando `sed`. Aquí, el texto ' Contar 'Será reemplazado por 100 en la línea que contiene el texto, 'CSE 'Y el texto' Contar' será reemplazado por 70 en la línea que contiene el patrón de búsqueda, ' EEE ’ .
$gatodept.txt$sed -Y '/ CSE / s / Count / 100 /; / EEE / s / Count / 70 /; 'dept.txt
Producción:
La siguiente salida aparecerá después de ejecutar los comandos anteriores.
10. Sustituya el texto, pero solo si no se encuentra otro texto en la cadena.
El siguiente comando 'sed' reemplazará el valor 'Recuento' en la línea que no contiene el texto, 'CSE'. dept.txt El archivo contiene dos líneas que no contienen el texto, 'CSE'. Entonces el ' Contar 'El texto se sustituirá por 80 en dos líneas.
$gatodept.txt$sed -I -Y '/ CSE /! s / Count / 80 /; 'dept.txt
Producción:
La siguiente salida aparecerá después de ejecutar los comandos anteriores.
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', etc. 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 otro después de ' 1'.
$echo 'Bash language' | sed 's / (Bash ) / Learn 1 programando /'Producción:
La siguiente salida aparecerá después de ejecutar el comando anterior. Aquí, ' Aprender' el texto se agrega antes 'Intento' y ' programación 'El texto se agrega después de' Intento'.
12. Eliminar líneas coincidentes
'D' La opción se usa en el comando `sed` para borrar cualquier línea del archivo. Crea un archivo llamado os.txt y agregue el siguiente contenido para probar la función de 'D' opción.
cat os.txt
VentanasLinux
Android
USTED
El siguiente comando `sed` borrará esas líneas de os.txt archivo que contiene el texto, 'SO'.
$gatoos.txt$sed '/El d'os.txt
Producción:
La siguiente salida aparecerá después de ejecutar los comandos anteriores.
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 el patrón, ' Linux ’ es encontrado. 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.txtProducción:
La siguiente salida aparecerá después de ejecutar el comando anterior.
14. Elimina todos los espacios al final de la línea de texto.
Utilizando [:blanco:] La clase 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.
$gatoos.txt$sed 's / [[: en blanco:]] * $ //'os.txt
Producción:
os.txt contiene líneas vacías después de cada línea que se eliminan mediante el comando `sed` anterior.
15. Elimine todas las líneas que tengan una coincidencia dos veces en la línea.
Crea un archivo de texto llamado, input.txt con el siguiente contenido y elimine las 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 envíe la salida al segundo comando' sed 'como entrada. El segundo comando 'sed' eliminará las líneas que contienen el texto ' dl ‘.
$gatoinput.txt$sed 's / php / dl / i2; t'input.txt| sed '/ dl / d'
Producción:
input.txt el archivo tiene dos líneas que contienen el patrón, 'Php' dos veces. Entonces, la siguiente salida aparecerá después de ejecutar los comandos anteriores.
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. input.txt archivo que se creó en el ejemplo anterior, contiene dos líneas vacías que se pueden eliminar mediante el siguiente comando `sed`. Aquí, '^ $' se usa para encontrar las líneas vacías en el archivo, input.txt.
$gatoinput.txt$sed '/ ^ $ / d'input.txt
Producción:
La siguiente salida aparecerá después de ejecutar los comandos anteriores.
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 ello, se asigna el carácter ' t' en una variable, $ tabulador que se utiliza 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.
$pestaña=$' t'$echo 'Hola$ tabWorld'
$echo 'Hola$ 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.
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 os.txt expediente.
$gatoos.txt$sed '/ Windows / s / $ / 10 /'os.txt
Producción:
La siguiente salida aparecerá después de ejecutar el comando.
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 input.txt archivo que se creó antes. Si el archivo contiene este texto en cualquier línea, ' PHP es un lenguaje interpretado ' se insertará antes de esa línea.
$gatoinput.txt$sed '/ PHP es independiente de la plataforma / s / ^ / PHP es un lenguaje interpretado. N /'input.txt
Producción:
La siguiente salida aparecerá después de ejecutar los comandos anteriores.
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 un nuevo texto, ' Ubuntu 'Se insertará después de esa línea.
$gatoos.txt$sed 's / Linux / & nUbuntu /'os.txt
Producción:
La siguiente salida aparecerá después de ejecutar los comandos anteriores.
21. Si no hay coincidencia, agregue algo al final de la línea.
El siguiente comando `sed` buscará esas líneas en os.txt que no contiene el texto, 'Linux' y agregue el texto, ' Sistema operativo 'Al final de cada línea. Aquí, ' $ El símbolo ‘se utiliza para identificar la línea donde se agregará el nuevo texto.
$gatoos.txt$sed '/ Linux /! S / $ / Sistema operativo / '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 contiene el texto, 'Linux' y los nuevos textos que se agregan al final de estas líneas.
22. Si no hay coincidencia, elimine la línea.
Crea un archivo llamado web.txt y agregue el siguiente contenido y elimine las líneas que no contengan 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 Producción: 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.
23. Duplique el texto coincidente después de agregar un espacio después del texto
El siguiente comando 'sed' buscará la palabra 'a' en el archivo, python.txt y si la palabra existe, la misma palabra se insertará después de la palabra de búsqueda agregando espacio. Aquí, ‘&’ El símbolo se utiliza para agregar el texto duplicado.
$gatopython.txt$sed -Y 's / to / & 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, 'para 'Con espacio se agrega después del texto coincidente.
24. Reemplaza una lista de cadenas con la nueva cadena
Debe crear dos archivos de lista para probar este ejemplo. Crea un archivo de texto llamado list1.txt y agregue el siguiente contenido.
cat list1.txt
1001=>Jafar Ali1023=>Nir Hossain
1067=>John Michel
Crea un archivo de texto llamado list2.txt y agregue el siguiente contenido.
$ cat list2.txt
1001GPA de CSE3.631002GPA de CSE3.24
1023GPA de CSE3.11
1067GPA de CSE3.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.
$gatolist1.txt$gatolist2.txt
$sed `gatolist1.txt| awk '{print' -e con / '$ 1' / '$ 3' / '}'`<<<'`cat list2.txt`'
Producción:
1001, 1023 y 1067 de list1.txt coincidencia de archivo con los tres datos de list2.txt archivo y estos valores se reemplazan por los nombres correspondientes de la tercera columna de list1.txt .
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, 'Pitón' en el texto. Si la palabra existe en el texto, entonces un nuevo texto, 'Texto agregado' se insertará con nueva línea. $ echo Bash Perl Python Java PHP ASP | sed 's / Python / Texto añadido n /' Producción: La siguiente salida aparecerá después de ejecutar el comando anterior.
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í, -Con La opción se utiliza para separar la línea por el carácter NULL.
$sed -Con 's / n /, / g'os.txtProducción:
La siguiente salida aparecerá después de ejecutar el comando anterior.
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, 30, lote' | sed 's/,/ orte/gramo'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.
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 borre la línea de os.txt expediente.
$gatoos.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.
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 'Me gusta la programación bash' | sed 's / Bash / PHP / i'Producción:
La siguiente salida aparecerá después de ejecutar el comando anterior. Aquí, la palabra 'Bash' coincide con la palabra 'bash' para la búsqueda que no distingue entre mayúsculas y minúsculas y se reemplaza por la palabra 'PHP'.
30. Busque coincidencias que no distingan entre mayúsculas y minúsculas y reemplácelas con todas las mayúsculas del mismo texto
' U' se utiliza en `sed` para convertir cualquier texto a letras mayúsculas. El siguiente comando `sed` buscará la palabra, 'Linux ' en el os.txt archivo y si la palabra existe, reemplazará la palabra con todas las letras mayúsculas.
$gatoos.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'.
31. Busque coincidencias que no distingan entre mayúsculas y minúsculas y reemplácelas con todas las minúsculas del mismo texto
'LOS' se utiliza en `sed` para convertir cualquier texto a minúsculas. El siguiente comando `sed` buscará la palabra, 'Linux' en el os.txt archivo y reemplace la palabra por todas las letras minúsculas.
$gatoos.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í.
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 os.txt archivo y reemplace los caracteres por letras minúsculas usando ' L'.
$gatoos.txt$sed 's / (. * ) / L 1 /'os.txt
Producción:
La siguiente salida aparecerá después de ejecutar los comandos anteriores.
33. Busque el número en la línea y agregue cualquier símbolo de moneda antes del número
Crea un archivo llamado items.txt con el siguiente contenido.
items.txt
HDD 100Monitor 80
Ratón 10
El siguiente comando `sed` buscará el número en cada línea de items.txt archivar y agregar el símbolo de moneda, '$' antes de cada número.
$gatoitems.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.
34. Agregue 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 utiliza para iterar el proceso de agrupación.
$echo '5098673' | sed -Y:a-Y '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.
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 -Y '1 t2 t3' | sed$'s / t / / g'Producción:
La siguiente salida aparecerá después de ejecutar el comando anterior.
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 -Y '1 2' | sed$'s / / t / g'Producción:
La siguiente salida aparecerá después de ejecutar el comando anterior.
37. Truncar todas las líneas a los primeros 80 caracteres
Crea un archivo de texto llamado in.txt que contiene 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 de in.txt archivo en 80 caracteres.
$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.
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 anexar el texto,' John 'Después de ese texto.
$echo '¿Hola como estas?' | sed 's / (hola ) / 1 John /'Producción:
La siguiente salida aparecerá después de ejecutar el comando anterior.
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 reemplace la segunda coincidencia en cada línea con el texto, 'Nuevo texto agregado' .
$gatoinput.txt$sed 's / (PHP ) / 1 (Nuevo texto agregado) / 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íneas de input.txt expediente. Entonces, el texto, ' Nuevo texto agregado 'Se inserta en la segunda y tercera líneas.
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`. Crea un archivo llamado 'Sedcmd 'Y agregue el siguiente contenido. Aquí, se agregan dos scripts `sed` en el archivo. Una secuencia de comandos reemplazará el texto ' PHP ' por 'ÁSPID 'Otra secuencia de comandos reemplazará el texto', independiente 'Por el texto', dependiente ‘.
sedcmd
s/PHP/ÁSPID/s/independiente/dependiente/
El siguiente comando 'sed' reemplazará todo el texto '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.
$gatosedcmd$sed -Fsedcmd input.txt
Producción:
La siguiente salida aparecerá después de ejecutar los comandos anteriores.
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.
$gatoos.txt$sed '$! N; s / Linux nAndoid / Ubuntu nAndoid Lollipop /; P; D'os.txt
Producción:
La siguiente salida aparecerá después de ejecutar los comandos anteriores.
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 -Y 's / ([^] * ) * ([^] * ) / 2 1 /'Producción:
La siguiente salida aparecerá después de ejecutar el comando anterior.
43. Ejecute varios comandos `sed` desde la línea de comandos
La opción '-e' se utiliza en el comando 'sed' para ejecutar varios scripts 'sed' desde la línea de comandos. El siguiente comando `sed` tomará un texto como entrada del comando` echo` y reemplaza a ' Ubuntu ' por ' Kubuntu ' y ' cientos ' por ' Fedora ‘.
$echo 'Ubuntu Centos Debian' | sed -Y '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'.
44. Combinar `sed` con otros comandos
El siguiente comando combinará el comando `sed` con el comando` cat`. El primer comando `sed` tomará la entrada de os.txt y envíe 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'.
$gatoos.txt| sed 's / Linux / Fedora /'| sed 's / windows / Windows 10 / i'Producción:
La siguiente salida aparecerá después de ejecutar el comando anterior.
45. Insertar línea vacía en un archivo
Crea un archivo llamado stdlist con el siguiente contenido.
stdlist
#ID #Nombre[101] -Pero
[102] -Neha
La opción 'G' se utiliza 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 de stdlist expediente.
$gatostdlist$sedG 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.
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 espacio en el stdlist expediente.
$gatostdlist$ pero 's / [A-Za-z0-9] // g'stdlist
Producción:
La siguiente salida aparecerá después de ejecutar los comandos anteriores.
47. Utilice '&' 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 mediante el símbolo' & '. Aquí, 'p' se utiliza para imprimir el texto modificado.
$sed -norte 's / ^ L / La cadena coincidente es - & / p'os.txtProducción:
La siguiente salida aparecerá después de ejecutar el comando anterior.
48. Cambiar par de palabras en un archivo
Crea un archivo de texto llamado course.txt con el siguiente contenido que contiene el par de palabras en cada línea.
course.txt
PHP ASPMySQL Oracle
CodeIgniter Laravel
El siguiente comando cambiará el par de palabras en cada línea del archivo, course.txt .
$sed 's / ([^] * ) * ([^] * ) / 2 1 /'course.txtProducción:
La siguiente salida aparecerá después de cambiar el par de palabras en cada línea.
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 'Me gusta la programación bash' | 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 I Like Bash Programming después de poner en mayúscula la primera palabra.
50. Imprimir 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 de os.txt archivo con número de línea.
$sed '='os.txtProducción:
La siguiente salida aparecerá después de ejecutar el comando anterior. Hay cuatro líneas en os.txt expediente. Entonces, el número de línea se imprime antes de cada línea del archivo.
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`.
Preguntas frecuentes
¿Para qué se utiliza el comando sed?
El comando sed tiene varios usos diferentes. Dicho esto, el uso principal es para sustituir palabras en un archivo o para buscar y reemplazar.
Lo mejor de sed es que puede buscar una palabra en un archivo y reemplazarla, pero ni siquiera tiene que abrir el archivo, ¡sed lo hace todo por usted!
Además de esto, se puede utilizar para borrar. Todo lo que necesita hacer es escribir la palabra que desea buscar, reemplazar o eliminar en sed, y se la mostrará; luego puede elegir reemplazar esa palabra o eliminar todos los rastros de la palabra de su archivo.
sed es una herramienta fantástica para poder reemplazar cosas como direcciones IP y cualquier cosa que sea altamente sensible que de otra manera no querrías poner en un archivo. ¡sed es una herramienta imprescindible para cualquier ingeniero de software!
¿Qué es S y G en el comando sed?
En sus términos más simples, la función S que se puede usar en sed simplemente significa 'sustituto'. Después de escribir la S, puede reemplazar o sustituir lo que desee; solo escribir S solo reemplazará la primera aparición de la palabra en una línea.
Por lo tanto, si tiene una oración o línea que la menciona más de una vez, la función S no es ideal ya que solo sustituirá la primera aparición. También puede especificar un patrón para que S reemplace palabras cada dos apariciones.
Especificar G al final del comando sed hará un reemplazo global (eso es lo que significa G). Teniendo esto en cuenta, si especifica G, reemplazará cada aparición de la palabra que ha elegido, en lugar de solo la primera aparición que hace la S.
¿Cómo ejecuto un script sed?
Puede ejecutar un script sed de varias formas, pero la más común es en la línea de comandos. Aquí puede especificar sed y el archivo en el que desea usar el comando.
Esto le permite usar sed en ese archivo, lo que le permite buscar, eliminar y sustituir según sea necesario.
También puede usarlo en un script de shell, y de esta manera puede pasar lo que quiera al script, y ejecutará el comando buscar y reemplazar por usted. Esto es útil para no querer especificar datos altamente confidenciales dentro de un script, por lo que en su lugar, puede pasarlos como una variable
Tenga en cuenta que esto, por supuesto, solo está disponible en Linux, por lo que deberá asegurarse de tener una línea de comandos de Linux para ejecutar su script sed.