Saltar la navegación

Comando r (read)

La sintaxis del comando r (read) es la siguiente:

r fichero

El objetivo es enviar a la salida estándar al final del ciclo el fichero indicado (si no existe se trata como fichero un vacío), sin pasar por la zona de trabajo.

$ cat muebles
mesa
silla
armario
$ sed '/o/r muebles' f
uno
mesa
silla
armario
dos
mesa
silla
armario
tres

En cada ciclo del ámbito del comando r el fichero se abre, se lee y se cierra. El ámbito puede ser un rango, siendo esto una extensión de GNU.

Todo lo que va a la derecha del nombre del comando se considera el nombre del fichero, por lo que para poner un comando a continuación se debe hacer en otra opción -e o bien en otra línea del script.

$ sed -e '/o/r muebles' -e 's/^/-/' f 
-uno
mesa
silla
armario
-dos
mesa
silla
armario
-tres

También como extensión GNU, se puede utilizar el nombre de fichero /dev/stdin para hacer referencia a la entrada estándar.

$ seq 3 | sed -e '/o/r /dev/stdin' f
uno
1
2
3
dos
tres

Como vemos, durante el primer ciclo del ámbito del comando r, la entrada estándar se lee y se cierra, pero para los siguientes ciclos ya no hay información, por eso no se envía nada después de la línea "dos", a partir del segundo ciclo la entrada estándar está vacía.

Los comandos a y r tienen el mismo objetivo, se diferencian en que con el primero hay que expecificar el texto y con el segundo el texto está en un fichero.