Suele ocurrir que, cuando tenemos una lista de elementos en las que se desea realizar una sustitución de caracteres, no interese modificar la primera ocurrencia y deseemos dejarla intacta.
El otro día necesitaba hacerlo utilizando el comando sed y, como me costó un rato averiguar cómo se hace aquí os dejo la solución y un ejemplo.
Espero os sea de utilidad 😉
Imagina que tienes la siguiente cadena de texto (la he obtenido preguntando por los grupos a los que pertenece determinado usuario y aplicando el comando cut para quedarme sólo con los grupos ignorando el nombre del usuario)
jasvazquez adm cdrom sudo dip plugdev lpadmin sambashare
Que quiero utilizar directamente con el comando useradd (requiere que se utilice la coma para separar los grupos en lugar del espacio en blanco) sin tener que escribir varias líneas en la terminal.
PROBLEMA: hay un espacio justo delante de jasvazquez que no me interesa sustituir por una coma puesto que daría error y no quiero concatenar varios comandos sed (enrevesado que es uno 😉 )
La solución pasa por modificar levemente la expresión (observa el 2 delante de la g habitual)
sed 's/ /,/2g'
Con ésto le estamos indicando que cambie a partir de la segunda ocurrencia (sírvete cambiarlo por un 3, 4, … según las ocurrencias que te gustaría «perdonar»)
El ejemplo completo que he utilizado sería
groups jasvazquez | cut -d: -f2 | sed 's/ /,/2g'
y el resultado el que puedes observar en la siguiente captura
Y tú…
- ¿Conocías esta posibilidad?
- ¿Eres de copiar el resultado en un editor de textos y aplicar un buscar/reemplazar o de cambiar manualmente los espacios por comas en la misma línea de comandos? 😉
- …
Ole soy el primero que lee este post 😉 y espero no ser el último.
Un abrazo, amigo para que no te sientas tan solo en verano.
P.D.: Si quieres spam te puedo vender un jamón o un chorizo (muy buenos, eso sí)
Me gustaMe gusta
Leerlo no creo pero desde luego que eres el que ha abierto el fuego de los comentarios y se te agradece Teodo 😉
Como beneficio de haber sido el primero, el contar con una de las posiciones más codiciadas por aquellos que quieren visibilidad para sus blogs y/o webs (lástima que no incluyeses enlace a artículo relacionado y/o de interés 😛 )
Me gustaMe gusta
Super interesante consejo.
Igual lo pruebo y te digo si me sale o rompo todo 😉
Saludos!
Me gustaMe gusta
No te preocupes, todo irá bien y, si se rompe, se aprende arreglándolo 😉
Me gustaMe gusta
Con relación a este post te diré que yo soy muy de textos gnosticos y de San Juan de la Cruz, pero este nivel … Acojonante, claro estamos en temporada alta.
Un saludo, campeon!
Me gustaMe gusta
Pues ya tenemos algo en común aunque siempre me he decantado por Santa Teresa y sus «yemas» 😛
Respecto al nivel, has dado en el «clavo» (toma estigma pro beatificación), he aprovechado que no me lee ni Dios para colar un artículo técnico 😉
Me gustaMe gusta
Gracias, me lo apunto. Otra forma de hacer lo mismo sería:
$ groups jasvazquez | sed ‘s/ /,/g’ | cut -d, -f3-
De esta forma eliminas el espacio del principio.
Un saludo.
Me gustaMe gusta
¡Sí señor! Muy buena, gracias por compartirla Sergi
Me gustaMe gusta