AYUDA con script Bash

Iniciado por DiegoMarley, 2 Diciembre 2014, 15:05 PM

0 Miembros y 1 Visitante están viendo este tema.

DiegoMarley

Resulta que estoy mirando para hacer un script en bash al que se le pase como argumento un archivo de texto como éste:

Maria:x:1003:1003:Mari,,,:/home/maria:/bin/bash
usuario:x:1003:
Manolo:x:1005:1005:Manolillo,,,:/home/manolo:/bin/bash
jose:x:1005:


Y lo que quiero es que el script detecte cada línea y compruebe si es un usuario o un grupo y que lo añada al fichero de configuración correspondiente.
He intentado hacerlo con un bucle for, pero no consigo hacerlo funcionar.
Espero que podáis ayudarme, un saludo!

engel lex

cito las reglas del foro...

CitarI.A.1.c. Relevancia.

Los temas en el foro deberán ser relevantes, es decir, deberán estar en cierta forma orientados al propósito del subforo en donde fueron publicados, en caso de que un tema no sea útil en el subforo donde fue publicado, los usuarios no deberán responder a dicho tema hasta que este sea enviado a su respectivo lugar.

Si dicho tema no tiene ningún subforo, podría ser transferido al Foro Libre, o de lo contrario eliminado, esto queda a discreción del moderador.

Al publicar un tema en un subforo han de tenerse en cuenta las normas adicionales que pudieran afectar al mismo y que, en caso de haberlas, se encontrarán en una chincheta dentro del mismo.

Queda prohibido publicar mas de una vez el mismo mensaje tanto en el mismo subforo como en diferentes subforos. En caso de que una duda no haya sido respondida, se puede responder al mensaje para que regrese a la primera página en caso de que este haya salido de esta.
   

En caso de colocar un enlace a un recurso externo, este deberá estar disponible de forma pública en una zona que no requiera registro, y este directamente relacionado con el tema tratado.
   
En caso de que un usuario tenga mas del 50% de sus mensajes bloqueados o en papelera, se le alertará de dicho comportamiento, en caso de no corregirlo, será acreedor a una sanción segun lo especificado en la sección III.C.
   
No se deberán repetir preguntas que se hayan realizado muchas veces en el tablón correspondiente o que sean muy básicas. Para evitar esto deberán mirarse las chinchetas o temas relevantes del tablón, utilizarse el buscador del foro y un buscador de Internet antes de realizar la pregunta, referirse a los siguientes documentos para una guía de como hacer una pregunta relevante:
10 pasos para plantear una duda informática
FAQ : Como hacer preguntas "inteligentes"
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

daryo

#2
el fichero se llama lista.lst
los divido segun los formatos hay dos formatos

usuario:x:1003:
tiene 4 datos separados por el caracter ":" (si en realidad 3 pero cuenta lo que hay despues del ultimo ":" asi este vacio)
y las linas como
Manolo:x:1005:1005:Manolillo,,,:/home/manolo:/bin/bash
tiene 7 datos.

Código (bash) [Seleccionar]
#!/bin/bash
set n=0
for a in $(cat lista.lst | awk 'BEGIN{FS=":"}{print NF;}')
do
n=$((n+1))
if [ $a = 4 ]; then
echo $(head -$n lista.lst | tail -1) >> grupos.txt
elif [ $a = 7 ]; then
echo $(head -$n lista.lst | tail -1) >> usuarios.txt
fi

done

buenas