GNU/Linux >> Tutoriels Linux >  >> Linux

La commande sed avec l'option -i échoue sur Mac, mais fonctionne sur Linux

Je crois que sur OS X lorsque vous utilisez -i une extension pour les fichiers de sauvegarde est requise . Essayez :

sed -i .bak 's/hello/gbye/g' *

Utilisation de GNU sed l'extension est facultative .


Si vous utilisez le -i option, vous devez fournir une extension pour vos sauvegardes.

Si vous avez :

File1.txt
File2.cfg

La commande (notez le manque d'espace entre -i et '' et le -e pour le faire fonctionner sur les nouvelles versions de Mac et sur GNU) :

sed -i'.original' -e 's/old_link/new_link/g' *

Créez 2 fichiers de sauvegarde comme :

File1.txt.original
File2.cfg.original

Il n'existe aucun moyen portable d'éviter de créer des fichiers de sauvegarde car il est impossible de trouver un mélange de commandes sed qui fonctionne dans tous les cas :

  • sed -i -e ... - ne fonctionne pas sur OS X car il crée -e sauvegardes
  • sed -i'' -e ... - ne fonctionne pas sur OS X 10.6 mais fonctionne sur 10.9+
  • sed -i '' -e ... - ne fonctionne pas sous GNU

Remarque Étant donné qu'il n'y a pas de commande sed fonctionnant sur toutes les plates-formes, vous pouvez essayer d'utiliser une autre commande pour obtenir le même résultat.

Par exemple, perl -i -pe's/old_link/new_link/g' *


Linux
  1. Remplacez les guillemets intelligents par la commande Linux sed

  2. Commande Linux Tee avec exemples

  3. Comment utiliser la commande Sed sous Linux avec des exemples

  4. Commande JQ sous Linux avec exemples

  5. Existe-t-il une commande linux comme mv mais avec regex ?

Commande Linux ip avec exemples

Commande Tr sous Linux avec des exemples

15 Commande Linux ps avec exemples

Commande de CD Linux avec exemples

Commande Linux watch avec exemples

Utilisation de la commande Linux sed avec des exemples