Commande SED: Comment -i et -e fonctionnent

J’utilise la commande sed pour la première fois pour essayer de remplacer un fichier avec un autre fichier dans un fichier txt / fsf. Quelqu’un peut-il m’aider à comprendre comment -i et -e travaillent ici?

Avec mon code, je parcourt divers dossiers et copie et stocke les fichiers dans chaque dossier et renomme le titre. Il semble que lorsque j’omets le -e, je reçois des erreurs à la commande sed ne fonctionne pas. Cependant, avec ce code actuel, la commande cp fonctionne correctement jusqu’à ce que j’ajoute la ligne sed. Maintenant, la commande cp produit deux fichiers par dossier $ {i} _design.fsf et $ {i} _design.fsf-e

Je ne suis pas sûr de ce qu’est le fichier -e. Le fichier semble être identique au fichier design.fsf d’origine. Est-ce lié à la commande sed?

#!/bin/sh # Folders=(CONTROL GROUP1 GROUP2) SC=(CPAKS_02 CPAKS_03 CPAKS_04 CPAKS_05 CPAKS_06 CPAKS_07) data_source=/Users/sheena/Desktop/test cd ${data_source} for j in ${Folders[@]}; do for i in ${SC[@]}; do cd ${data_source}/${j}/${i} cp ${data_source}/design.fsf ${data_source}/${j}/${i}/${i}_design.fsf for k in ${i}_design.fsf; do sed -i -e 's,'/Users/sheena/Desktop/DTI/CPAKS_03/fmri','${data_source}/${j}/${i}/${i}_fmri.nii',' ${i}_design.fsf done done done 

Vous utilisez BSD (OSX).

-i indique à sed de modifier le fichier en place avec l’option de créer un fichier de sauvegarde. Pour BSD sed , contrairement à GNU (Linux) sed , l’option -i nécessite un argument. L’argument spécifie le suffixe utilisé pour le fichier de sauvegarde. Si vous ne voulez pas de fichier de sauvegarde, utilisez sed -i '' -e ... L’argument vide, '' , indique à BSD sed ne pas enregistrer de sauvegarde.

En d’autres termes, dans votre cas, la commande sed -i -e ... été interprétée comme spécifiant un suffixe -e pour le fichier de sauvegarde. Si vous ne voulez pas de sauvegarde, utilisez sed -i '' -e ...