Linux/Unix Shell Scripting - Eliminar líneas que comiencen por una cadena

   
Vista:

Eliminar líneas que comiencen por una cadena

Publicado por caic (82 intervenciones) el 14/04/2014 12:35:02
Hola,

Tengo un fichero de usuarios con el siguiente formato:

1
2
usuario1:hash_de_la_contraseña
usuario2:hash_de_la_contraseña


Y estoy creando un pequeño script con menús para gestionar los usuarios.

Para borrar un usuario hago lo siguiente:

1
grep -v $USER_NAME usuarios.txt > usuarios.tmp && mv usuarios.tmp usuarios.txt


Pero tengo el problema de que si existe "usuario1" y "usuario11" y borro el "usuario1" borraré también "usuario11".

Para evitarlo he pensado hacer el mismo grep pero indicando que la linea a eliminar debe comenzar por el usuario mas los dos puntos:

1
grep -v '^$USER_NAME:' usuarios.txt


Pero no consigo que funcione.

Si lo ejecuto en linea de comando sin variables si que funciona:

1
grep -v '^usuario1:' usuarios.txt


Pero con variables no funciona.

¿Alguna idea?

Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Eliminar líneas que comiencen por una cadena

Publicado por Tom (253 intervenciones) el 14/04/2014 12:56:32
Opción 1:
1
grep -vw $USER_NAME

Opción 2:
1
grep -v '^'$USER_NAME':'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Eliminar líneas que comiencen por una cadena

Publicado por caic (82 intervenciones) el 14/04/2014 15:05:49
La opción 2 funcionó perfecta.

Gracias! :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar