web-dev-qa-db-fra.com

SED sans fichier de sauvegarde

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?

37
LA_

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]/' 
68
Marco de Jongh

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 =

2
Anonymous