La casse de la recherche & remplacer avec sed

Je suis en train d'utiliser SED pour extraire du texte à partir d'un fichier journal.

Je peux faire un rechercher-remplacer sans trop de difficultés:

sed 's/foo/bar/' mylog.txt

Cependant, je veux faire de la recherche insensible à la casse. De ce que j'ai googlé, il ressemble ajoutant i à la fin de la commande devrait fonctionner:

sed 's/foo/bar/i' mylog.txt

Cependant, cela me donne un message d'erreur:

sed: 1: "s/foo/bar/i": bad flag in substitute command: 'i'

Ce qui ne va pas ici, et comment puis-je résoudre ce problème?

Je suis sur macOS, en cas de questions.

  • Avez-vous essayé de capital "je"?
  • Je l'ai fait, mais il ne fonctionne pas. Il est perplexe, me suffit que je poste un appel à l'aide sur DONC. 🙁
  • Pouvez-vous essayer de mettre à jour votre copie de sed? I est une extension GNU qui peut ne pas être disponible avec votre copie de la sed.
  • J'ai installé gnu sed, et il fonctionne... mais il me semble que si j'ai besoin d'exécuter un autre programme entièrement, il pourrait aussi bien être de perl.
  • MODIFIER: j'ai frappé à travers l'OS X de qualification, comme l'OP accepté une réponse qui ne fonctionne pas sur OS X. (Comme une autre réponse indiqué, sed sur OS X ne supporte pas la comparaison insensible à la casse, contrairement à la documentation d'Apple.)
  • Merci pour ça; dans le cas où vous vient le sentiment que la documentation d'Apple promet quelque chose de la mise en œuvre ne délivre de ma réponse ci-dessous: man sed EST cohérente avec la mise en œuvre - aucune mention de la (et pas de soutien dans la pratique) comparaison insensible à la casse; si vous avez trouvé un morceau de documentation en prétendant le contraire, s'il vous plaît laissez-nous savoir.
  • oui, désolé, je corrige la position des mains. La documentation d'Apple ne fait aucune revendication de comparaison insensible à la casse pour le sed.
  • FWIW, les versions GNU des outils dont la version BSD est livré avec OS X sont disponibles à partir de divers gestionnaires de paquets. J'ai de la suite complète d'utilitaires de texte installé via Homebrew avec un g préfixe, donc je peux l'utiliser gsed ou gdate quand j'ai besoin d'une fonctionnalité qui n'est pas trouvé dans la version stock.
  • Depuis la question, il est clair que c'est un BSD problème de mise en œuvre qui affecte directement macOS, je pense qu'il garantit unstriking la qualification. Une requête pour "macOS casse sed recherche" m'a conduit ici, ce qui m'amène à croire que c'est d'une importance particulière. Je vais débiffer, la communauté doit me juger.

InformationsquelleAutor Craig Walker | 2010-12-10