GNU/Linux >> Tutoriales Linux >  >> Linux

Aprende a usar el editor de texto Sed

Creado para la versión 7 del sistema operativo Unix original de AT&T, el sed El comando se ha incluido probablemente con todos los sistemas operativos Unix y Linux desde entonces. El sed la aplicación es un editor de secuencias y, a diferencia de un editor de texto, no abre un búfer visual en el que se cargan los datos de un archivo para su procesamiento. En su lugar, opera en un archivo, línea por línea, según un comando ingresado en una terminal o una serie de comandos en un script.

Instalando

Más recursos de Linux

  • Hoja de trucos de los comandos de Linux
  • Hoja de trucos de comandos avanzados de Linux
  • Curso en línea gratuito:Descripción general técnica de RHEL
  • Hoja de trucos de red de Linux
  • Hoja de trucos de SELinux
  • Hoja de trucos de los comandos comunes de Linux
  • ¿Qué son los contenedores de Linux?
  • Nuestros últimos artículos sobre Linux

Si está utilizando Linux, BSD o macOS, entonces ya tiene GNU o BSD sed instalado. Estas son dos reimplementaciones únicas del original sed comando, y aunque son similares, puede haber pequeñas diferencias. GNU sed generalmente se considera que es el sed más rico en funciones por ahí, y está ampliamente disponible en cualquiera de estas plataformas.

Si no puede encontrar GNU sed (a menudo llamado gsed en sistemas que no son Linux), puede descargar su código fuente desde el sitio web de GNU. Lo bueno de tener GNU sed instalado es que se puede usar para sus funciones adicionales, pero también se puede restringir para que se ajuste solo a las especificaciones POSIX de sed , en caso de que necesite portabilidad.

En Windows, puede instalar GNU sed con Chocolatey.

Cómo funciona Sed

El sed aplicación funciona en una línea a la vez. Debido a que no tiene una pantalla visual, crea un espacio de patrón:un espacio en la memoria que contiene la línea actual del flujo de entrada (con cualquier carácter de nueva línea final eliminado). Una vez que se completa el espacio del patrón, sus instrucciones para sed son ejecutados. A veces, sus comandos son condicionales y otras veces son absolutos, por lo que los resultados de estos comandos dependen de cómo esté usando sed .

Cuando se llega al final de los comandos, sed imprime el contenido del espacio del patrón en el flujo de salida. El flujo de salida predeterminado es stdout , pero se puede redirigir a un archivo o incluso volver al mismo archivo mediante --in-place=.bak opción.

Luego, el ciclo comienza de nuevo con la siguiente línea de entrada.

La sintaxis para sed el comando es:

$ sed --options [optional SCRIPT] [INPUT FILE or STREAM]

Encontrar lo que desea editar

En un editor visual, normalmente localizas lo que quieres cambiar en un archivo de texto sin pensar mucho en ello. Su ojo (o lector de pantalla) escanea el texto, encuentra la palabra que desea cambiar o el lugar donde desea insertar o eliminar texto, y luego simplemente comienza a escribir. No hay un modo interactivo para sed , sin embargo, debe decirle qué condiciones se deben cumplir para que ejecute comandos específicos.

Para estos ejemplos, suponga que un archivo llamado example.txt contiene este texto:

hello
world
This is line three.
Here is the final line.

Número de línea

Especificar un número de línea le dice a sed para operar solo en esa línea específica en el archivo.

Por ejemplo, este comando selecciona la línea 1 de un archivo y lo imprime. Porque sed La acción predeterminada de después del procesamiento también es imprimir una línea en stdout , esto tiene el efecto de duplicar la primera línea:

$ sed ‘1p’ example.txt
hello
hello
world
This is line three.
Here is the final line.

También puede especificar números de línea en pasos. Por ejemplo, 1~2 indica que cada 2 líneas están seleccionadas ("seleccionar cada segunda línea empezando por la primera"). La instrucción 1~3 significa seleccionar cada tercera línea después de la primera:

$ sed ‘1p’ example.txt
hello
hello
world
This is line three.
Here is the final line.
Here is the final line.

Posición de línea

Puede operar solo en la última línea de un archivo usando $ como selector:

$ sed ‘$p’ example.txt
hello
world
This is line three.
Here is the final line.
Here is the final line.

En GNU sed , puede seleccionar más de una línea (sed '1,$p' imprime la primera y última línea, por ejemplo).

Negación

Cualquier selección por número o posición, puede invertir con el signo de exclamación (! ) personaje. Esto selecciona todas las líneas excepto la primera línea:

$ sed ‘1!p’ example.txt
hello
world
world
This is line three.
This is line three.
Here is the final line.
Here is the final line.

Coincidencia de patrones

Puede pensar en una coincidencia de patrones como buscar operación en un procesador de texto o un navegador. Proporcionas una palabra (un patrón ) y se seleccionan los resultados. La sintaxis para una coincidencia de patrón es /pattern/ .

$ sed ‘/hello/p’ example.txt
hello
hello
world
This is line three.
Here is the final line.
$ sed ‘/line/p’ example.txt
hello
world
This is line three.
This is line three.
Here is the final line.
Here is the final line.

Editando con Sed

Una vez que haya encontrado lo que desea editar, puede realizar cualquier acción que desee. Realiza ediciones con sed con comandos Comandos en sed son diferentes de los sed comando mismo. Si te ayuda, piensa en ellos como "acciones", "verbos" o "instrucciones".

Comandos en sed son letras sueltas, como p para imprimir comando utilizado en ejemplos anteriores. Pueden ser difíciles de recordar al principio, pero como con todo, se aprenden con la práctica.

p para imprimir

El p La instrucción imprime lo que se encuentra actualmente en el espacio del patrón.

d para borrar

El d La instrucción elimina el espacio del patrón.

$ sed ‘$d’ example.txt
hello
world
This is line three.
$ sed ‘1d’ example.txt
world
This is line three.
Here is the final line.

s para buscar y reemplazar

Los s El comando busca un patrón y lo reemplaza con otra cosa. Este es probablemente el uso más popular e informal de sed , y suele ser el primero (y a veces el único) sed comando que aprende un usuario. Es casi seguro que es el comando más útil para la edición de texto.

$ sed ‘s/world/opensource.com/’
hello
opensource.com
This is line three.
Here is the final line.

También hay funciones especiales que puede usar en su texto de reemplazo. Por ejemplo, \L transforma el texto de reemplazo a minúsculas y \l hace lo mismo solo para el siguiente carácter. Hay otros, que se enumeran en el sed documentación (puede ver eso con el info sed comando).

El carácter especial & en la cláusula de reemplazo se refiere al patrón coincidente:

$ sed ‘s/is/\U&/’ example.txt
hello
world
ThIS is line three.
Here IS the final line.

También puede pasar banderas especiales para afectar cómo s procesa lo que encuentra. El g (para global , presumiblemente) la bandera dice s para aplicar el reemplazo a todas las coincidencias encontradas en la línea y no solo a la primera coincidencia:

$ sed ‘s/is/\U&/g’ example.txt
hello
world
ThIS IS line three.
Here IS the final line.

Otras banderas importantes incluyen un número para indicar qué ocurrencia de un patrón coincidente afectar:

$ sed ‘s/is/\U&/2’ example.txt
hello
world
This IS line three.
Here is the final line.

El w marca, seguida de un nombre de archivo, escribe una línea coincidente en un archivo solo si se hace un cambio:

$ sed ‘s/is/\U&/w sed.log’ example.txt
hello
world
ThIS is line three.
Here IS the final line.
$ cat sed.log
ThIS is line three.
Here IS the final line.

Las banderas se pueden combinar:

$ sed ‘s/is/\U&/2w sed.log’ example.txt
hello
world
This IS line three.
Here is the final line.
$ cat sed.log
This IS line three.

Guiones

Hay muchos sitios geniales con sed "frases de una sola línea". Te dan sed orientado a tareas Comandos para resolver problemas comunes. Sin embargo, aprender sed para ti mismo te permite escribir tus propias frases ingeniosas, que se pueden adaptar a tus necesidades específicas.

Guiones para sed se pueden escribir como líneas en una terminal, o se pueden guardar en un archivo y ejecutar con sed sí mismo. Tiendo a escribir pequeños scripts como un solo comando porque rara vez reutilizo sed comandos en la vida real. Cuando escribo un sed script, por lo general es muy específico para un archivo. Por ejemplo, después de escribir el borrador inicial de este mismo artículo, usé sed para estandarizar las mayúsculas de "sed", y esa es una tarea que probablemente nunca tendré que volver a hacer.

Puede emitir una serie de comandos distintos para sed separados por un punto y coma (; ).

$ sed ‘3t ; s/line/\U&/’ example.txt
hello
world
This is LINE three.
This is the final line.

Cambios de alcance con llaves

También puede limitar qué resultados se ven afectados con llaves ({} ). Cuando encierras sed comandos entre llaves, se aplican solo a una selección específica. Por ejemplo, la palabra "línea" aparece en dos líneas del texto de muestra. Puedes forzar sed para afectar solo la línea final declarando la condición de coincidencia requerida ($ para indicar la línea final) y colocando los s comando que desea ejecutar entre llaves inmediatamente después:

$ sed ‘$ {s/line/\U&/}’ example.txt
hello
world
This is line three.
This is the final LINE.

Aprende Sed

Puedes hacer mucho más con sed que lo que se explica en este artículo. Ni siquiera he llegado a ramificar (b ), pruebas (t ), la retención espacio (H ), y muchas otras características. Me gusta ed , sed probablemente no sea el editor de texto que usará para la creación de documentos o incluso para cada tarea con guión que necesite hacer, pero es una opción poderosa que tiene como usuario de POSIX. Aprendiendo cómo sed los comandos están estructurados y cómo escribir guiones cortos puede hacer cambios rápidos en grandes cantidades de texto. Lea la info páginas de GNU sed , o las páginas man de BSD sed y descubre qué sed puede hacer por usted.


Linux
  1. 6 metacaracteres de Linux que me encanta usar en la línea de comandos

  2. Cómo usar el comando sed de Linux

  3. Cómo usar heredoc como editor de texto

  4. Uso avanzado del visor de archivos de menos texto en Linux

  5. ¿Cómo insertar texto antes de la primera línea de un archivo?

Cómo usar la función de revisión ortográfica en el editor de texto Vim

Manipulación de texto en la línea de comando con grep

Micro:un editor de texto basado en la línea de comandos para Linux

CÓMO UTILIZAR EL EDITOR SED

Cómo instalar la última versión del editor de texto nano

Cómo eliminar el texto seleccionado en el editor vi