Sed può salvare il suo output in un file?


33

> può farlo.

echo "text" > file

tee può farlo.

echo "test" | tee file 

Puoi sedfarlo senza utilizzare uno dei precedenti? È possibile salvare l'output di un sedcomando in un file senza usare o >o tee?


Prova a trovare la risposta tu stesso prima di pubblicare domande qui. La prima cosa che chiediamo ai nostri utenti è di cercare e fare ricerche prima di pubblicare. Tutto quello che dovevi fare era sed '' file > newfilee avresti visto che >può davvero essere usato sedcon qualsiasi altro programma.
terdon

1
Sta ancora usando l' >operatore. Ero interessato se ci fosse un comando sed che poteva essere usato invece. Ma eliminerò questa domanda se è così male.
Folatt,

Ah giusto. OK, questa è una domanda molto diversa. Poiché hai accettato la sed -irisposta, modificherò la tua domanda e chiarirò cosa stai cercando.
terdon

Ho accettato " sed non è pensato per il reindirizzamento dei dati come teee >(sono) fatti per essere".
Folatt,

Risposte:


49

tee e> possono essere usati per il reindirizzamento dei dati perché sono pensati per essere usati per il reindirizzamento dei dati in linux.

sed è invece un editor di stream. sed non è pensato per il reindirizzamento dei dati come tee e> dovrebbe essere. Tuttavia è possibile utilizzare la congiunzione di comandi per farlo.

usa tee o> con sed

sed 's/Hello/Hi/g' file-name | tee file

o

sed 's/Hello/Hi/g' file-name > file

usa sed con l'opzione -i

sed -i 's/Hello/Hi/g' file-name

l'ultimo non reindirizza, invece effettuerà modifiche nel file stesso.


2
Grazie. Hai capito la mia domanda. Quindi la risposta è no. Ho pensato sedche forse potrebbe farlo, perché è anche in grado di creare file di backup con l' -i.bakopzione.
Folatt,

2
Corretta. Inoltre -i.bak non è un'opzione fissa, è possibile utilizzare qualsiasi estensione, che si desidera avere il file di backup. per es. -i.log funzionerà anche. :)
ankidaemon,

Mi piace solo aggiungere quello che effettivamente cercava echo "test" | dd of=file status=none, sopprimendo l'output di un'eco senza usare l'oscuro reindirizzamento dell'output 2> /dev/null, ma invece ho chiesto i limiti di sed. Sono stato davvero colpito dalle capacità di sed in quanto è in grado di aggiungere righe al file, dandomi l'impressione che sed possa fare qualsiasi cosa tee possa fare e altro.
Folatt,

11

sedha il wcomando che potrebbe fare ciò di cui hai bisogno:

w nomefile

Scrivi lo spazio modello corrente nel nome file.

sed 'w file'da solo avrà lo stesso effetto di tee file. Se ci sono altri comandi sed, inserisci l' wultimo:

sed 's/This/That/;w file'

Tuttavia, questo non sarà influenzato -n/--quiet/--silentdall'opzione. Ciò elimina solo il contenuto che sarebbe altrimenti andato all'output standard.


0

Come ankidaemon ha correttamente sottolineato come possiamo salvare l'output di sed in un file. Vorrei aggiungere che se stiamo eseguendo alcune operazioni su un file, ad esempio sostituirlo e vorrei salvare l'output nello stesso file. C'è una -ibandiera in sedcui è possibile effettuare modifiche sul posto. Questo tuttavia crea un file di backup nel processo. Se ciò non è necessario, ciò può essere fatto semplicemente passando il nome del file vuoto al -iflag.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.