J'utilise SED pour remplacer une ligne avec NULL dans un fichier. La commande que j'ai utilisée est ceci fonctionne bien sous Linux. Shayam est remplacé par vide dans le fichier. Mais quand j'ai utilisé cela à Solaris, il montre une erreur. P> sed: option illégale - i p>
blockQuote> Comment utiliser -i fonctionnalité de SED à Solaris. Veuillez vous aider. P> p>
4 Réponses :
Exemple: p> chat code> le fichier ou essayez
<< / code>?
Puis tuyau (
| code>) résultat à un fichier temporaire et si tout va bien (
&& code>)
mv code> le templile au fichier d'origine.
L'option Vous devrez installer la version GNU ou renommer le nouveau fichier sur l'ancien: p> -i code> est spécifique à GNU. La version Solaris ne prend pas en charge l'option.
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
sed code> ne contient pas de
. -i code> option
Vous utilisez probablement une variante spécifique au fournisseur de 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. p> Dans ce cas particulier, cependant, il y a un Beaucoup de solution: utiliser le bon outil pour le travail. Voir aussi: p> SED code>. 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 code>, vous devez vous assurer d'installer ladite variante non normalisée spécifique au fournisseur et besoin Pour vous assurer que vous appelez il em> et n'appelez pas la version compatible des normes de
SED code> qui fait partie de votre environnement d'exploitation. P>
sed code> est un em> éditeur de flux em> (c'est pourquoi il est appelé em> "sed"), c'est-à-dire pour la modification des flux, pas des fichiers. Si vous souhaitez modifier des fichiers, utilisez un em> éditeur de fichier em>, tel que
ed code>
: p>
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' '{}' \;