Shell : redirection de fichier
Résolu
ibliss11
Messages postés
49
Date d'inscription
Statut
Membre
Dernière intervention
-
ibliss11 Messages postés 49 Date d'inscription Statut Membre Dernière intervention -
ibliss11 Messages postés 49 Date d'inscription Statut Membre Dernière intervention -
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.
A voir également:
- Shell : redirection de fichier
- Classic shell - Télécharger - Personnalisation
- Ssh secure shell download - Télécharger - Divers Web & Internet
- Shell startup windows 10 - Guide
- Shell infrastructure host c'est quoi - Guide
- Shell do while ✓ - Forum Shell
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).
;-))
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 :
mais elle ne donne rien.
J'ai du ****** quelque part.
Avez vous une idée ?
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" :
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.
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
;-))
É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.
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.