Diferencia entre revisiones de «Sed (software)»

(Página creada con '{{otros usos|Sed_(desambiguación)}} {{Ficha Software |nombre=Sed |imagen= |descripción=Sed es un editor de flujo que acepta como entrada un archivo, lo lee y modifica línea ...')
 
(Fuentes)
 
(No se muestran 12 ediciones intermedias de 3 usuarios)
Línea 1: Línea 1:
{{otros usos|Sed_(desambiguación)}}
 
 
 
{{Ficha Software
 
{{Ficha Software
 
|nombre=Sed
 
|nombre=Sed
Línea 13: Línea 11:
 
|premios=
 
|premios=
 
|web=
 
|web=
}}
+
}}{{otros usos|Sed (desambiguación)}}
 
 
  
'''Sed''' es un [[editor de flujo]], una potente herramienta de [[tratamiento de texto]] para el [[sistema operativo]] [[Unix]] que acepta como entrada un archivo, lo lee y modifica línea a línea de acuerdo a un [[Script (informática)|script]], mostrando el resultado por [[salida estándar]] (normalmente en pantalla, a menos que se realice una redirección). Sed permite manipular flujos de datos, como por ejemplo cortar líneas, buscar y reemplazar texto (con soporte de [[expresiones regulares]]), entre otras cosas. Posee muchas características de [[Ed (Unix)|ed]] y [[ex]].
+
'''Sed''' es un editor de flujo, una potente herramienta de tratamiento de texto para el [[sistema operativo]] [[Unix]] que acepta como entrada un archivo, lo lee y modifica línea a línea de acuerdo a un [[Script|script]], mostrando el resultado por salida estándar (normalmente en pantalla, a menos que se realice una redirección). Sed permite manipular flujos de datos, como por ejemplo cortar líneas, buscar y reemplazar texto (con soporte de [[Expresion regular|expresiones regulares]]), entre otras cosas. Posee muchas características de ed y ex.
  
Como lenguaje de programación es [[Turing completo]]. Provee instrucciones para realizar saltos condicionales e incondicionales a cualquier posición del script o al final del mismo. Análogas a [[GOTO]], permiten la programación no estructurada.
+
Como lenguaje de [[programación]] es Turing completo. Provee instrucciones para realizar saltos condicionales e incondicionales a cualquier posición del script o al final del mismo. Análogas a GOTO, permiten la programación no estructurada.
  
 
== Sintaxis ==
 
== Sintaxis ==
 +
La sintaxis general de la orden sed es:
  
La sintaxis general de la orden sed es:
+
  <code>sed [-n] [-e'script'] [-f archivo] archivo1 archivo2 ...</code>
 
 
  
 
donde:
 
donde:
Línea 33: Línea 29:
  
 
Un script consiste en una o varias órdenes del editor (uno por línea o separados por ";") con la siguiente estructura:
 
Un script consiste en una o varias órdenes del editor (uno por línea o separados por ";") con la siguiente estructura:
+
 
   
+
  <code>[inicio[,fin]] función[argumentos]</code>
  
 
donde inicio y fin hacen referencia a las líneas (número de línea) afectadas (o intervalo de líneas); función hace referencia a la orden de editor a aplicar y argumentos hace referencia a los argumentos necesarios para la ejecución de la función.
 
donde inicio y fin hacen referencia a las líneas (número de línea) afectadas (o intervalo de líneas); función hace referencia a la orden de editor a aplicar y argumentos hace referencia a los argumentos necesarios para la ejecución de la función.
 
   
 
   
Para expresar las órdenes en varias líneas es posible utilizar comillas o apóstrofos, u opcionalmente añadir el carácter barra invertida <nowiki>"\"</nowiki> antes de pulsar [[Entrar_(tecla)|Intro]].
+
Para expresar las órdenes en varias líneas es posible utilizar comillas o apóstrofos, u opcionalmente añadir el carácter barra invertida <nowiki>"\"</nowiki> antes de pulsar ''Enter''.
  
 
== Ejemplos de uso ==
 
== Ejemplos de uso ==
Línea 44: Línea 40:
 
Cambia todas las minúsculas a mayúsculas de archivo:
 
Cambia todas las minúsculas a mayúsculas de archivo:
 
  sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' archivo
 
  sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' archivo
 
  
 
Borra la 3ª línea de archivo:
 
Borra la 3ª línea de archivo:
 
  sed '3d' archivo
 
  sed '3d' archivo
 
  
 
Añade una línea con el contenido "Línea insertada" después de cada línea del archivo:
 
Añade una línea con el contenido "Línea insertada" después de cada línea del archivo:
 
  sed 'a\
 
  sed 'a\
 
  Línea insertada' archivo
 
  Línea insertada' archivo
 
  
 
Elimina todas las secuencias de Escape del tipo Xm y Zm que se suelen usar para letras en negrita, etc. para vt100 y cambia el formato de los saltos de línea, de un archivo almacenando los resultados en un archivo nuevo ('''^[''' representa al caracter de escape, ingresable por medio de control V + escape, y '''^M''' representa al caracter de [[retorno de carro]]):
 
Elimina todas las secuencias de Escape del tipo Xm y Zm que se suelen usar para letras en negrita, etc. para vt100 y cambia el formato de los saltos de línea, de un archivo almacenando los resultados en un archivo nuevo ('''^[''' representa al caracter de escape, ingresable por medio de control V + escape, y '''^M''' representa al caracter de [[retorno de carro]]):
Línea 60: Línea 53:
 
       s/'''^M'''/\
 
       s/'''^M'''/\
 
  /g' archivo > archivo.nuevo
 
  /g' archivo > archivo.nuevo
 
  
 
Determina si un número natural mayor o igual a 2, es primo:
 
Determina si un número natural mayor o igual a 2, es primo:
Línea 87: Línea 79:
  
 
== Véase también ==
 
== Véase también ==
*[[awk]]
+
* [[AWK]]
  
== Enlaces externos ==
+
== Fuentes ==
 
*[http://www.opengroup.org/onlinepubs/9699919799/utilities/sed.html sed] - Especificación de sed en el estándar IEEE Std 1003.1-2008.
 
*[http://www.opengroup.org/onlinepubs/9699919799/utilities/sed.html sed] - Especificación de sed en el estándar IEEE Std 1003.1-2008.
 
*[http://www.gnu.org/software/sed/manual/sed.html Manual de sed (en inglés)]
 
*[http://www.gnu.org/software/sed/manual/sed.html Manual de sed (en inglés)]
Línea 96: Línea 88:
 
[[Category:Aplicaciones_informáticas]]
 
[[Category:Aplicaciones_informáticas]]
 
[[Category:Ciencias_informáticas]]
 
[[Category:Ciencias_informáticas]]
[[Category:Software_Libre]]
+
[[Category:Software_libre]]
 
[[Category:Programación]]
 
[[Category:Programación]]

última versión al 09:25 16 jun 2016

Sed
Información sobre la plantilla
CreadorLee E. McMahon
Fecha de Creación1973
Versionessed, GNU sed, busybox sed, psed, HHsed, super sed, sedmod, ssed.
Sistemas Operativos compatiblesMultiplataforma
Para otros usos de este término, véase Sed (desambiguación).


Sed es un editor de flujo, una potente herramienta de tratamiento de texto para el sistema operativo Unix que acepta como entrada un archivo, lo lee y modifica línea a línea de acuerdo a un script, mostrando el resultado por salida estándar (normalmente en pantalla, a menos que se realice una redirección). Sed permite manipular flujos de datos, como por ejemplo cortar líneas, buscar y reemplazar texto (con soporte de expresiones regulares), entre otras cosas. Posee muchas características de ed y ex.

Como lenguaje de programación es Turing completo. Provee instrucciones para realizar saltos condicionales e incondicionales a cualquier posición del script o al final del mismo. Análogas a GOTO, permiten la programación no estructurada.

Sintaxis

La sintaxis general de la orden sed es:

 sed [-n] [-e'script'] [-f archivo] archivo1 archivo2 ...

donde:

  • -n indica que se suprima la salida estándar.
  • -e indica que se ejecute el script que viene a continuación. Si no se emplea la opción -f se puede omitir -e.
  • -f indica que los órdenes se tomarán de un archivo

Un script consiste en una o varias órdenes del editor (uno por línea o separados por ";") con la siguiente estructura:

[inicio[,fin]] función[argumentos]

donde inicio y fin hacen referencia a las líneas (número de línea) afectadas (o intervalo de líneas); función hace referencia a la orden de editor a aplicar y argumentos hace referencia a los argumentos necesarios para la ejecución de la función.

Para expresar las órdenes en varias líneas es posible utilizar comillas o apóstrofos, u opcionalmente añadir el carácter barra invertida "\" antes de pulsar Enter.

Ejemplos de uso

Cambia todas las minúsculas a mayúsculas de archivo:

sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' archivo

Borra la 3ª línea de archivo:

sed '3d' archivo

Añade una línea con el contenido "Línea insertada" después de cada línea del archivo:

sed 'a\
Línea insertada' archivo

Elimina todas las secuencias de Escape del tipo Xm y Zm que se suelen usar para letras en negrita, etc. para vt100 y cambia el formato de los saltos de línea, de un archivo almacenando los resultados en un archivo nuevo (^[ representa al caracter de escape, ingresable por medio de control V + escape, y ^M representa al caracter de retorno de carro):

sed 's/^[\[[0-9]*m//g
     s/^[\[[0-9]*w//g
     s/^M/\
/g' archivo > archivo.nuevo

Determina si un número natural mayor o igual a 2, es primo:

echo 42 | sed -e 's/[0-9]/|0123456789n&/g; s/\(.\)[^n]*n\1//g
    :mult; s/[0-9]|/|0000000000/g; /[0-9]|/bmult
    s/[1-9]/0/g; s/|*/00|/; h
    :siguiente; s/\(0*\)|\1/|/; /|$/{s/.*/es primo/;q}; g
        :restar; s/^\(0*\)|\1/\1|/; trestar
        /|$/{ s/.*/no es primo/; q }
        g; s/^/0/; h
    bsiguiente'

Órdenes usuales de sed

  • a\: Tras terminar el ciclo de procesamiento del script sobre la línea actual, añade la línea especificada a continuación.
  • c\: Sustituye la línea actual por la especificada a continuación.
  • d: Borra la línea actual.
  • i\: Similar a a\, pero es insertada inmediatamente (sin esperar a finalizar el ciclo).
  • p: Imprime la línea actual, inclusive cuando se utiliza la opción -n.
  • q: Abandona el proceso cuando se alcanza la línea especificada.
  • r archivo: Lee un archivo, añadiendo su contenido a la salida.
  • w archivo: Copia la línea en archivo.
  • =: Imprime el número de línea.
  • !orden: Aplica la orden si la condición previa al signo de admiración, no selecciona la línea actual.

Véase también

Fuentes