Vendredi - Extension Sed
Créer une simple enveloppe pour la commande ’sed’ (ou toute autre commande similaire) pour lui permettre de traiter directement un fichier. Normallement, sed utilise les sorties et entrées standard, et ne peut écrire dans son fichier entrée.
$ cat sedx
#!/bin/sh
tmp=tmp-file-for-$PPID
{ sed "$1" "$2" > $tmp
&& mv $tmp "$2"
} || rm $tmp
Notez que la ligne la plus évidente :
sed “$1″ “$2″ > $tmp ; mv $tmp “$2″
ne doit pas être utilisée ainsi compte tenu qu’une erreur dans le script sed provoquerait l’élimination de tous les fichiers.
Utilisez sedx de cette manière :
$ sedx ’s/XXX/ZZZ/’ index.html
pour appliquer la commande sed à index.html.
Le script tel qu’il est donné n’accepte qu’un seul fichier en entrée. Utilisez les scripts de Mercredi et de Jeudi pour traiter plusieurs fichiers.
S’applique à tous les fichiers du répertoire courant :
$ each *.html sedx ’s/XXX/YYY/’
Ou à tous les fichiers de la hiérarchie du répertoire :
$ reach *.html sedx ’s/XXX/YYY/’
Ajoutez une gestion de paramètres au script :
$ cat sedx #!/bin/sh
if [ "$2" = "" -o "$1" = "-usage" ]; then echo "Exécute une commande sed en écrivant dans le fichier d'origine." echo "Usage: ${0##*/} sed-command file" echo "Ou utilisez avec (r)each" echo "Usage: (r)each filetype ${0##*/} sed-command" exit fi
tmp=tmp-file-for-$PPID { sed "$1" "$2" > $tmp && mv $tmp "$2" } || rm $tmp
Si vous souhaitez en apprendre plus sur Mac OS X Unix visitez le Learning Center
cliquez ici.
- Pour les débutants : Le Tutoriel Mac OS X Unix
- Pour plus d’informations sur des sujets spécifiques : Mac OS X Advanced Unix
- Pour des réponses à des problèmes communs : Mac OS X How To
Chargement
Commentaires récents