Quiero reemplazar una cadena de salida grep
, tengo:
$ npm info webpack | grep version
me da salida
$ version: '2.1.0-beta.12',
pero quiero tener:
$ 2.1.0-beta.12
Así que creo que podría lograrlo usando sed
y reemplazando subcadenas innecesarias. Pero aquí va la parte difícil para mí:
$ npm info webpack | grep version: | sed s/version: /
sed: -e expression #1, char 10: unterminated `s' command
¿Cómo puedo lograr mi objetivo?
-E
opción obviamente significa usar la sintaxis de ERE, pero mi manual de GNU sed 4.2.2 solo menciona-r
.-E
funciona, sin embargo!-E
es un indocumentado sinónimo de-r
. El rumor es que POSIX se ha decidido-E
, que BSD / OSX ya usa, y, si eso se agrega al estándar final, todos haremos la transición-E
.El
sed
comando sustituto (s
) espera un patrón de búsqueda y una cadena de reemplazo. Solo le proporcionó un patrón de búsqueda. También debe citar cadenas correctamente en el shell:Esto te dará el resultado
'2.1.0-beta.12',
, que no es exactamente lo que desea.Como el resultado de
grep
es tan simple, puede usarlocut
con el delimitador'
para obtener el segundo campo de la línea (sin la necesidad de expresiones regulares complicadas):Esto te dará
2.1.0-beta.12
.También he añadido
-F
a lagrep
ya que la cadena se busca es una cadena fija , no una expresión regular.fuente
Primero, puede intentar usar
sed
:o puedes usar
awk
:lo cual es probablemente más fácil
fuente