>
puede hacerlo.
echo "text" > file
tee
puede hacerlo.
echo "test" | tee file
¿Puede sed
hacerlo sin usar ninguno de los anteriores? ¿Es posible guardar la salida de un sed
comando en un archivo sin usar ninguno >
o tee
?
fuente
>
puede hacerlo.
echo "text" > file
tee
puede hacerlo.
echo "test" | tee file
¿Puede sed
hacerlo sin usar ninguno de los anteriores? ¿Es posible guardar la salida de un sed
comando en un archivo sin usar ninguno >
o tee
?
tee y> se pueden usar para la redirección de datos porque están destinados a ser utilizados para la redirección de datos en Linux.
sed por otro lado es un editor de flujo. sed no está destinado a la redirección de datos como tee y> está destinado a ser. Sin embargo, puede usar conjunción de comandos para hacer eso.
use tee o> con sed
sed 's/Hello/Hi/g' file-name | tee file
o
sed 's/Hello/Hi/g' file-name > file
use sed con la opción -i
sed -i 's/Hello/Hi/g' file-name
el último no redirige, sino que hará cambios en el archivo en sí.
sed
por sí solo podría hacerlo, porque también es capaz de crear archivos de respaldo con la -i.bak
opción.
echo "test" | dd of=file status=none
, suprimiendo la salida de un eco sin usar la oscura redirección de salida 2> /dev/null
, pero en su lugar solicité las limitaciones de sed. Realmente me impresionaron las habilidades de sed, ya que es capaz de agregar líneas en el archivo, dándome la impresión de que sed podría hacer cualquier cosa, y más.
sed
tiene el w
comando que podría hacer lo que necesita:
w nombre de archivo
Escribe el espacio del patrón actual en el nombre del archivo.
sed 'w file'
por sí solo tendrá el mismo efecto que tee file
. Si hay otros comandos sed, coloque el w
último:
sed 's/This/That/;w file'
Sin embargo, esto no se verá afectado por la -n/--quiet/--silent
opción. Eso solo suprime el contenido que de otro modo habría pasado a la salida estándar.
Como ankidaemon señaló correctamente cómo podemos guardar la salida de sed en un archivo. Me gustaría agregar que si estamos realizando algunas operaciones en un archivo, es decir, reemplazar y me gustaría guardar la salida en el mismo archivo. Hay una -i
bandera en la sed
que se pueden realizar ediciones in situ. Sin embargo, esto crea un archivo de respaldo en el proceso. Si eso no es necesario, puede hacerlo simplemente pasando el nombre de archivo vacío a la -i
marca.
sed '' file > newfile
y habría visto que>
, de hecho, se puede usarsed
con cualquier otro programa.>
operador. Me interesaba si hubiera un comando sed que pudiera usarse en su lugar. Pero eliminaré esta pregunta si es tan mala.sed -i
respuesta, editaré su pregunta y aclararé lo que busca.sed
no está destinado a la redirección de datos comotee
y>
(están) destinados a ser".