[HS] Script bash
Le
Tahar
--0-1751251924-1176216861=:19894
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
bonjour à tous,
je voudrais solliciter votre aide pour l'écriture d'un script, permettant de réorganiser un fichier organisé en tableau genre /etc/passwd
voilà grâce à un premier script j'ai obtenu un fichier organisé comme suit :
-rwxrwxr-x 1 wwwrun www 14K Jan 18 17:21 ./ae/aetech-solutions.com/a./a.boughezala/userdb
-rwxrwxr-x 1 wwwrun www 14K Jan 31 08:09 ./ae/aetech-solutions.com/c./c.amri/userdb
-rwxrwxr-x 1 wwwrun www 14K Jan 30 17:59 ./ae/aetech-solutions.com/d./d.chabbah/userdb
-rwxrwxr-x 1 wwwrun www 14K Jan 23 15:56 ./ae/aetech-solutions.com/da/dap/userdb
-rwxrwxr-x 1 wwwrun www 16K Jan 31 08:12 ./ae/aetech-solutions.com/dc/dc1/userdb
-rwxrwxr-x 1 wwwrun www 14K Jan 18 17:22 ./ae/aetech-solutions.com/m./m.boumaiza/userdb
sachant que le séparateur étant le /, le troisième champs représente mes domaines et le 5ème les logins, je voudrais avoir un résultat dans un autre fichiers du genre login@domaine,
pour cela j'ai fait le script suivant
#!/bin/bash
while read line
do
domaine=$(cut -d/ -f3)
login=$(cut -d/ -f5)
echo "$login@$domaine" >> mail_complet
done < resultat_final
or ça ne marche pas, j'obtiens uniquement les domaines, je peux obtenir les logins et les domaines si je fais deux bocles séparées, et je mets chacun dans deux fichiers intermédiaires, mais comment les recoller par la suite pour obtenir le résultat escompté ?
merci de m'éclaire de vos lumières :)
@+
--0-1751251924-1176216861=:19894
Content-Type: text/html; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
bonjour à tous,<br><br>je voudrais solliciter votre aide pour l'écriture d'un script, permettant de réorganiser un fichier organisé en tableau genre /etc/passwd<br><br>voilà grâce à un premier script j'ai obtenu un fichier organisé comme suit :<br><br>-rwxrwxr-x 1 wwwrun www 14K Jan 18 17:21 ./ae/aetech-solutions.com/a./a.boughezala/userdb<br>-rwxrwxr-x 1 wwwrun www 14K Jan 31 08:09 ./ae/aetech-solutions.com/c./c.amri/userdb<br>-rwxrwxr-x 1 wwwrun www 14K Jan 30 17:59 ./ae/aetech-solutions.com/d./d.chabbah/userdb<br>-rwxrwxr-x 1 wwwrun www 14K Jan 23 15:56 ./ae/aetech-solutions.com/da/dap/userdb<br>-rwxrwxr-x 1 wwwrun www 16K Jan 31 08:12 ./ae/aetech-solutions.com/dc/dc1/userdb<br>-rwxrwxr-x 1 wwwrun www 14K Jan 18 17:22 ./ae/aetech-solutions.com/m./m.boumaiza/userdb<br><br>sachant que le séparateur étant le /, le troisième champs représente mes domaines et le 5ème les logins, je voudrais avoir un résultat dans un autre fichiers du genre
login@domaine,<br><br>pour cela j'ai fait le script suivant <br><br>#!/bin/bash<br><br>while read line<br>do<br> domaine=$(cut -d/ -f3)<br> login=$(cut -d/ -f5)<br> echo "$login@$domaine" >> mail_complet<br>done < resultat_final<br><br><br><br>or ça ne marche pas, j'obtiens uniquement les domaines, je peux obtenir les logins et les domaines si je fais deux bocles séparées, et je mets chacun dans deux fichiers intermédiaires, mais comment les recoller par la suite pour obtenir le résultat escompté ?<br><br><br>merci de m'éclaire de vos lumières :)<br><br>@+<br>
--0-1751251924-1176216861=:19894--
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
bonjour à tous,
je voudrais solliciter votre aide pour l'écriture d'un script, permettant de réorganiser un fichier organisé en tableau genre /etc/passwd
voilà grâce à un premier script j'ai obtenu un fichier organisé comme suit :
-rwxrwxr-x 1 wwwrun www 14K Jan 18 17:21 ./ae/aetech-solutions.com/a./a.boughezala/userdb
-rwxrwxr-x 1 wwwrun www 14K Jan 31 08:09 ./ae/aetech-solutions.com/c./c.amri/userdb
-rwxrwxr-x 1 wwwrun www 14K Jan 30 17:59 ./ae/aetech-solutions.com/d./d.chabbah/userdb
-rwxrwxr-x 1 wwwrun www 14K Jan 23 15:56 ./ae/aetech-solutions.com/da/dap/userdb
-rwxrwxr-x 1 wwwrun www 16K Jan 31 08:12 ./ae/aetech-solutions.com/dc/dc1/userdb
-rwxrwxr-x 1 wwwrun www 14K Jan 18 17:22 ./ae/aetech-solutions.com/m./m.boumaiza/userdb
sachant que le séparateur étant le /, le troisième champs représente mes domaines et le 5ème les logins, je voudrais avoir un résultat dans un autre fichiers du genre login@domaine,
pour cela j'ai fait le script suivant
#!/bin/bash
while read line
do
domaine=$(cut -d/ -f3)
login=$(cut -d/ -f5)
echo "$login@$domaine" >> mail_complet
done < resultat_final
or ça ne marche pas, j'obtiens uniquement les domaines, je peux obtenir les logins et les domaines si je fais deux bocles séparées, et je mets chacun dans deux fichiers intermédiaires, mais comment les recoller par la suite pour obtenir le résultat escompté ?
merci de m'éclaire de vos lumières :)
@+
--0-1751251924-1176216861=:19894
Content-Type: text/html; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
bonjour à tous,<br><br>je voudrais solliciter votre aide pour l'écriture d'un script, permettant de réorganiser un fichier organisé en tableau genre /etc/passwd<br><br>voilà grâce à un premier script j'ai obtenu un fichier organisé comme suit :<br><br>-rwxrwxr-x 1 wwwrun www 14K Jan 18 17:21 ./ae/aetech-solutions.com/a./a.boughezala/userdb<br>-rwxrwxr-x 1 wwwrun www 14K Jan 31 08:09 ./ae/aetech-solutions.com/c./c.amri/userdb<br>-rwxrwxr-x 1 wwwrun www 14K Jan 30 17:59 ./ae/aetech-solutions.com/d./d.chabbah/userdb<br>-rwxrwxr-x 1 wwwrun www 14K Jan 23 15:56 ./ae/aetech-solutions.com/da/dap/userdb<br>-rwxrwxr-x 1 wwwrun www 16K Jan 31 08:12 ./ae/aetech-solutions.com/dc/dc1/userdb<br>-rwxrwxr-x 1 wwwrun www 14K Jan 18 17:22 ./ae/aetech-solutions.com/m./m.boumaiza/userdb<br><br>sachant que le séparateur étant le /, le troisième champs représente mes domaines et le 5ème les logins, je voudrais avoir un résultat dans un autre fichiers du genre
login@domaine,<br><br>pour cela j'ai fait le script suivant <br><br>#!/bin/bash<br><br>while read line<br>do<br> domaine=$(cut -d/ -f3)<br> login=$(cut -d/ -f5)<br> echo "$login@$domaine" >> mail_complet<br>done < resultat_final<br><br><br><br>or ça ne marche pas, j'obtiens uniquement les domaines, je peux obtenir les logins et les domaines si je fais deux bocles séparées, et je mets chacun dans deux fichiers intermédiaires, mais comment les recoller par la suite pour obtenir le résultat escompté ?<br><br><br>merci de m'éclaire de vos lumières :)<br><br>@+<br>
--0-1751251924-1176216861=:19894--
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

Poser une question


bonjour,
Awk est tout indiqué quand on dispose de séparateurs fiables :
awk -F/ '$NF>=5{print $5"@"$3}' <resultat_final >mail_complet
C'est le premier cut qui bouffe toute l'entrée standard...
--
Jacques L'helgoualc'h
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Tahar a écrit :
Bonjour,
Je dirais que bash n'est peut-être pas le bon outil, c'est typiquement
le cas où "awk" fait des miracles...
Par exemple, en supposant que le fichier issue de ton premier script
s'appelle "test" :
awk -F "/" '{print $5"@"$3}' test > mails.txt
et tu auras ta liste de mails...
mil
--
Nous vivons a une époque ou le superflu est notre seule nécessite.
-+- Oscar Wilde -+-
Attention, les 'cut' travaillent directement sur l' entrée
de la boucle, au lieu de travailler sur $line.
Essaie plutôt:
domaine=`echo $line | cut -d/ -f3`
login=`echo $line | cut -d/ -f5`
Sinon, une méthode qui sera sans doute plus courte et
efficace est d'utiliser sed, en remplaçant la ligne complète
par des bouts, réordonnés:
find . -name userdb | sed s/^.*/(.*)/.*/(.*)/userdb$//
J'ai pas dis plus facile à lire ;)
Y.
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
[...]
Le shell (ba)?sh sait faire ça tout seul...
Tu abuses de l'obfusquitude :) --- et il faut protéger ta commande...
GNUSed :
sed -nre 's,^.*/([^/]+)/[^/]+/([^/]+)/userdb$,,p'
--
Jacques L'helgoualc'h
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact