Je veux remplacer une chaîne de sortie grep
, j'ai:
$ npm info webpack | grep version
ça me sort
$ version: '2.1.0-beta.12',
mais je veux avoir:
$ 2.1.0-beta.12
Je pense donc que je pourrais y parvenir en utilisant sed
et en remplaçant les sous-chaînes inutiles. Mais voici la partie difficile pour moi:
$ npm info webpack | grep version: | sed s/version: /
sed: -e expression #1, char 10: unterminated `s' command
Comment atteindre mon objectif?
-E
option signifie évidemment utiliser la syntaxe ERE, mais mon manuel GNU sed 4.2.2 mentionne seulement-r
.-E
fonctionne, cependant!-E
est un synonyme non documenté-r
. La rumeur est que POSIX s'est installé-E
, que BSD / OSX utilise déjà, et, si cela est ajouté à la norme finale, nous passerons tous à-E
.La
sed
commande de substitution (s
) attend un modèle de recherche et une chaîne de remplacement. Vous ne lui avez fourni qu'un modèle de recherche. Vous devez également citer correctement les chaînes dans le shell:Cela vous donnera le résultat
'2.1.0-beta.12',
, ce qui n'est pas tout à fait ce que vous voulez.Étant donné que la sortie de
grep
est si simple, vous pouvez utilisercut
avec le délimiteur'
pour obtenir le deuxième champ de la ligne (sans avoir besoin d'expressions régulières compliquées):Cela vous donnera
2.1.0-beta.12
.J'ai également ajouté
-F
àgrep
puisque la chaîne que vous recherchez est une chaîne fixe , pas une expression régulière.la source
Tout d'abord, vous pouvez essayer d'utiliser
sed
:ou vous pouvez utiliser
awk
:ce qui est probablement plus facile.
la source