web-dev-qa-db-fra.com

Sed peut-il enregistrer sa sortie dans un fichier?

> peut le faire.

echo "text" > file

tee peut le faire.

echo "test" | tee file 

sed peut-il le faire sans utiliser l'une des méthodes ci-dessus? Est-il possible d'enregistrer la sortie d'une commande sed dans un fichier sans utiliser ni > ou tee?

45
Folatt

tee et> peuvent être utilisés pour la redirection des données car ils sont destinés à être utilisés pour la redirection des données sous linux.

sed, d'autre part, est un éditeur de flux. sed n'est pas destiné à la redirection de données comme tee et> censé l'être. Cependant, vous pouvez utiliser la conjonction de commandes pour ce faire.

utiliser tee ou> avec sed

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

ou

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

utiliser sed avec l'option -i

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

le dernier ne redirige pas, au lieu de cela, il apportera des modifications dans le fichier lui-même.

65
ankidaemon

sed a la commande w qui pourrait faire ce dont vous avez besoin:

w nom de fichier

Écrivez l'espace de motif actuel dans le nom de fichier.

sed 'w file' aura à lui seul le même effet que tee file. S'il existe d'autres commandes sed, mettez la w en dernier:

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

Cependant, cela ne sera pas affecté par le -n/--quiet/--silent option. Cela supprime uniquement le contenu qui aurait autrement été envoyé à la sortie standard.

11
JigglyNaga

Comme ankidaemon a correctement indiqué comment nous pouvons enregistrer la sortie sed dans un fichier. Je voudrais ajouter que si nous effectuons certaines opérations sur un fichier, c'est-à-dire remplacer et que nous souhaitons enregistrer la sortie dans le même fichier. Il y a un -i drapeau dans sed ce qui rend possible les modifications sur place. Cela crée cependant un fichier de sauvegarde dans le processus. Si ce n'est pas nécessaire, cela peut être fait en passant simplement un nom de fichier vide à -i drapeau.

0
Waqar Ahmed