Shell : redirection de fichier
Résolu
ibliss11
Messages postés
49
Statut
Membre
-
ibliss11 Messages postés 49 Statut Membre -
ibliss11 Messages postés 49 Statut Membre -
Bonjour à tous,
Il y a quelque chose qui m'échappe depuis un moment déjà : pourquoi, lorsqu'on redirige la sortie d'une opération d'un fichier sur lui même, le fichier s'efface-t-il ?
Par exemple :
Merci d'avance à ceux qui répondront ou juste liront ce message.
Il y a quelque chose qui m'échappe depuis un moment déjà : pourquoi, lorsqu'on redirige la sortie d'une opération d'un fichier sur lui même, le fichier s'efface-t-il ?
Par exemple :
sort monfichier > monfichier
Merci d'avance à ceux qui répondront ou juste liront ce message.
6 réponses
-
Salut,
Parce que ">" redirige la sortie standard vers un fichier (et l'écrase par conséquence).
Alors que ">>" redirige la sortie standard vers un fichier en concaténant le tout (ajout).
;-)) -
Merci pour votre réponse.
Jusque là je comprends.
Ce que je ne comprends pas c'est pourquoi le fichier devient vide après ce type de commande.
Si il y a redirection de la sortie standard alors monfichier devrait contenir le résultat de la commande, hors il est vide et toutes les données sont perdues.
Plus précisement, hier je cherchais à remplacer tous les sauts de ligne d'un fichier par des espaces.
Comme je n'y arrivais pas avec sed j'ai utilisé tr.
J'ai essayé cette commande :
cat monFichier | tr -s '\n' ' ' > monFichier
mais elle ne donne rien.
J'ai du ****** quelque part.
Avez vous une idée ? -
La redirection (en sortie) vers le fichier d'entrée n'est jamais souhaitable ;-((
Avec "sed" :
sed -i.bak ':z;N;$! bz;s/\n/ /g' fichier
-
D'accord, c'est noté.
Je vais l'écrire en rouge au dessus de mon lit.
En tout cas la commande marche, je n'ai plus qu'à la comprendre maintenant.
Merci beaucoup zipe31.
À bientôt pour de nouvelles aventures.-
:z
Étiquette
N
On ajoute la ligne suivante dans l'espace de travail
$ !b z
Dernière ligne du fichier ($) différente (!) ? On se branche (b) à l'étiquette (:z) et on recommence...
s/\n/ /g
Quand on a atteint la dernière ligne, on exécute la substitution, à savoir : remplacer toutes (g) les fins de ligne (\n) par un espace
;-))
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
D'autant plus qu'une fois encore j'aurais pu trouver tout seul :
https://forums.commentcamarche.net/forum/affich-37620122-sed-introduction-a-sed-part-iii
Désolé d'avoir entamé votre crédit patience de la semaine.
Merci encore.