11
votes

L'option SED -I ne fonctionne pas sur Solaris

J'utilise SED pour remplacer une ligne avec NULL dans un fichier. La commande que j'ai utilisée est xxx

ceci fonctionne bien sous Linux. Shayam est remplacé par vide dans le fichier. Mais quand j'ai utilisé cela à Solaris, il montre une erreur.

sed: option illégale - i

Comment utiliser -i fonctionnalité de SED à Solaris. Veuillez vous aider.


0 commentaires

4 Réponses :


0
votes

chat le fichier ou essayez << / code>? Puis tuyau ( | ) résultat à un fichier temporaire et si tout va bien ( && ) mv le templile au fichier d'origine.

Exemple: xxx


0 commentaires

13
votes

L'option -i est spécifique à GNU. La version Solaris ne prend pas en charge l'option.

Vous devrez installer la version GNU ou renommer le nouveau fichier sur l'ancien: xxx


1 commentaires

Utilisation de MKTEMP aide à ne pas intervenir par inadvertance sur aucun fichier nommé fichier.new ... TMP = $ (mktemp) && sed -e 's /.* shayam. * // g' Fichier> "$ TMP"> "$ TMP" && mv "$ TMP" fichier; RM "$ TMP" 2> / dev / null



3
votes

sed ne contient pas de -i option .

Vous utilisez probablement une variante spécifique au fournisseur de SED . Si vous souhaitez utiliser les extensions non normalisées spécifiques au fournisseur de votre variante non normalisée spécifique au fournisseur de SED , vous devez vous assurer d'installer ladite variante non normalisée spécifique au fournisseur et besoin Pour vous assurer que vous appelez il et n'appelez pas la version compatible des normes de SED qui fait partie de votre environnement d'exploitation.

Notez que Comme toujours lors de l'utilisation d'extensions non normalisées spécifiques au fournisseur, il n'ya absolument aucune garantie que votre code sera portable, ce qui correspond exactement au problème que vous voyez.

Dans ce cas particulier, cependant, il y a un Beaucoup de solution: utiliser le bon outil pour le travail. sed est un éditeur de flux (c'est pourquoi il est appelé "sed"), c'est-à-dire pour la modification des flux, pas des fichiers. Si vous souhaitez modifier des fichiers, utilisez un éditeur de fichier , tel que ed : xxx

Voir aussi:


0 commentaires

12
votes

Je viens de répondre à une question similaire SED -I + Quelle est la même option dans Solaris , mais pour ceux qui trouvent ce fil à la place (je l'ai vu dans la section du thread correspondant):

Le principal problème que je vois avec la plupart des réponses est que cela ne fonctionne pas Si vous souhaitez modifier plusieurs fichiers. La réponse que j'ai donnée dans l'autre fil: p>

Ce n'est pas exactement la même chose que SED -i, mais j'ai eu un problème similaire. Tu peut faire cela en utilisant perl: p>

find . -exec perl -pi -e 's/find/replace/g' '{}' \;


0 commentaires