¿Se puede guardar su salida en un archivo?

33

> puede hacerlo.

echo "text" > file

tee puede hacerlo.

echo "test" | tee file 

¿Puede sedhacerlo sin usar ninguno de los anteriores? ¿Es posible guardar la salida de un sedcomando en un archivo sin usar ninguno >o tee?

Folatt
fuente
Intente encontrar la respuesta usted mismo antes de publicar preguntas aquí. Lo primero que pedimos a nuestros usuarios es buscar e investigar antes de publicar. Todo lo que tenía que hacer era sed '' file > newfiley habría visto que >, de hecho, se puede usar sedcon cualquier otro programa.
terdon
1
Eso sigue usando el >operador. Me interesaba si hubiera un comando sed que pudiera usarse en su lugar. Pero eliminaré esta pregunta si es tan mala.
Folatt
Ah bien. OK, esa es una pregunta muy diferente. Como aceptó la sed -irespuesta, editaré su pregunta y aclararé lo que busca.
terdon
Acepté " sed no está destinado a la redirección de datos como teey >(están) destinados a ser".
Folatt

Respuestas:

49

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í.

ankidaemon
fuente
2
Gracias. Entendiste mi pregunta. Por tanto, la respuesta es no. Pensé que sedpor sí solo podría hacerlo, porque también es capaz de crear archivos de respaldo con la -i.bakopción.
Folatt
2
Correcto. Además, -i.bak no es una opción fija, puede usar cualquier extensión, que le gustaría que tuviera su archivo de copia de seguridad. por ej. -i.log también funcionará. :)
ankidaemon
Solo me gustaría agregar que realmente estaba buscando 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.
Folatt
11

sedtiene el wcomando 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/--silentopción. Eso solo suprime el contenido que de otro modo habría pasado a la salida estándar.

JigglyNaga
fuente
0

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 -ibandera en la sedque 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 -imarca.

Waqar Ahmed
fuente