J'utilise la commande sed
suivante pour remplacer le texte dans le fichier:
sed -i -e 's/noreply@\(.*\).example.com/[email protected]/' cron.yaml
Mais il crée une sauvegarde du fichier cron.yaml
sous le nom cron.yaml-e
.
J'ai essayé de bouger -i
jusqu'à la fin:
sed -e 's/noreply@\(.*\).example.com/[email protected]/' -i cron.yaml
mais dans ce cas, sed
renvoie une erreur.
Comment dois-je modifier ma ligne de commande pour éviter la création de fichiers de sauvegarde?
Selon la page de manuel vous devez spécifier une extension de longueur nulle sur macOS
sed -i '' -e 's/noreply@\(.*\).example.com/[email protected]/'
Sous Windows, le GNUWIN32 sed échoue, lors de la mise en place de tout ceci:
sed -i "s/WhatToFind/WhatToPut/g" ".\MyDir\*"
sed -i.BackUp "s/WhatToFind/WhatToPut/g" ".\MyDir\*"
Les sauvegardes sont toujours créées sur le dossier réel avec un modèle de nom de fichier de sed$$$$$$
, où ces six $ représentent des lettres et des nombres aléatoires.
Je ne vois aucun moyen pour lui de ne pas créer de sauvegarde du tout, ni de créer des sauvegardes qui peuvent être connues dans quel fichier était la source, ni de créer des sauvegardes sur le même dossier que le fichier source.
Et il essaie aussi de lire sub-folders
comme ils sont où files
, de courrse montrant un impossible to read
message pour un tel sub-folders
; et bien sûr, il ne récursive pas les sous-dossiers, il ne fonctionne qu'avec tous sur le même dossier, mais pas avec ce qui se trouve sur les sous-dossiers (non récursif).
En bref: -i
ne fonctionne pas du tout comme prévu.
La version de GNUWIN32 sed que j'utilise est 4.2.1, elle a été téléchargée à partir de: http://gnuwin32.sourceforge.net/packages/sed.htm
Sur Google, j'ai trouvé un site Web qui parle de ce BUG et recommande de télécharger un outil ssed
à la place dans sed
, j'ai un peu peur de ne pas être official
; lien vers ce que j'ai trouvé sur Google à ce sujet -i
BUG sur sed
: http://www.thinkplexx.com/learn/snippet/cmd/one-liner/working-in-place-sed-option-under-windows =