1 votes

Comment rendre cette commande SED plus portable ?

J'utilise les éléments suivants sed commandement :

cat version | sed -e 's/[0-9][0-9][0-9][0-9][0-9:M]*-[abp]/Ver\n/'

Ce qui se normalise comme ça :

4330M-p  ->  Ver<newline>

Cela fonctionne très bien avec GNU SED, mais avec BSD SED sur Mac OS X, la fonction \n se transforme en un n comme ça :

4330M-p  ->  Vern

Pour normaliser une sortie qui contient un numéro de version qui change dans le temps en une chaîne statique, suivie d'une nouvelle ligne. Ceci est utilisé dans le cadre d'un test où la sortie après l'exécution de sed est comparé via diff avec un fichier doré connu et nous ne voulons pas d'échecs dus au changement du numéro de version et nous avons besoin d'une nouvelle ligne ajoutée pour nos besoins.

Comment puis-je remplacer une chaîne de caractères qui ajoute une nouvelle ligne d'une manière qui fonctionne à la fois sur les versions GNU et BSD de l'application sed ou dois-je simplement installer GNU sed sur Mac OS X parce que cela ne peut pas être fait ?

0voto

user62154 Points 131

Vous pouvez faire une nouvelle ligne littérale dans votre script, comme ceci :

cat version | sed -e 's/[0-9][0-9][0-9][0-9][0-9:M]*-[abp]/Ver\
/'

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X