Lire un fichier et comparer ses lignes
Résolu/Fermé
Lucifugus
-
14 nov. 2009 à 01:45
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 16 nov. 2009 à 16:02
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 16 nov. 2009 à 16:02
A voir également:
- Lire un fichier et comparer ses lignes
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Fichier rar - Guide
- Lire fichier epub - Guide
- Fichier host - Guide
- Fichier iso - Guide
5 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 895
14 nov. 2009 à 08:11
14 nov. 2009 à 08:11
Salut,
Avec "sed" ?
;-))
Avec "sed" ?
[tmpfs]$ cat foo.sh #! /bin/sh #set -xv ls -1 *.sql | sed -n "$1,$2p" [tmpfs]$ ls -1 *.sql fichier1.sql fichier2.sql fichier3.sql fichier4.sql fichier5.sql fichier6.sql fichier7.sql fichier8.sql fichier9.sql [tmpfs]$ ./foo.sh 4 8 fichier4.sql fichier5.sql fichier6.sql fichier7.sql fichier8.sql [tmpfs]$ ./foo.sh 3 6 fichier3.sql fichier4.sql fichier5.sql fichier6.sql [tmpfs]$ ./foo.sh 6 9 fichier6.sql fichier7.sql fichier8.sql fichier9.sql [tmpfs]$
;-))
Avant tout merci jipicy ;)
Je ne connaissais pas sed x)
Mais j'ai toujours un petit soucis :
j'ai ma liste de fichier qui commence par le chiffre qui le différencie des autres (1_toto.sql 2_toto.sql ect ...)
j'ai beau avoir tester un ls -l *.sql | sed -n "1,2p" sa ne fonctionne pas =/
Et par la suite j'aimerais stocker le résultat du ls trier dans une variable pour pouvoir appliquer a ma db tous les fichiers sql qui ressortent de ce trie !
donc le stockage je pense que c'est variable=$(commande magique)
Sauf que là encore je bloque comment faire pour parcourir variable et ressortir chaque nom de fichier sql qu'il aura (1 par ligne je pense) pour les utilisers et les appliquer ?
Merci encore !!!
Je ne connaissais pas sed x)
Mais j'ai toujours un petit soucis :
j'ai ma liste de fichier qui commence par le chiffre qui le différencie des autres (1_toto.sql 2_toto.sql ect ...)
j'ai beau avoir tester un ls -l *.sql | sed -n "1,2p" sa ne fonctionne pas =/
Et par la suite j'aimerais stocker le résultat du ls trier dans une variable pour pouvoir appliquer a ma db tous les fichiers sql qui ressortent de ce trie !
donc le stockage je pense que c'est variable=$(commande magique)
Sauf que là encore je bloque comment faire pour parcourir variable et ressortir chaque nom de fichier sql qu'il aura (1 par ligne je pense) pour les utilisers et les appliquer ?
Merci encore !!!
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 895
16 nov. 2009 à 09:35
16 nov. 2009 à 09:35
Re-
Qu'est-ce qui ne fonctionne pas ???
Au cas ou... c'est un UN dans ls -1 et non pas un ELLE minuscule ;-\
Comme les fichiers à trier commencent par un chiffre, mieux vaut utiliser la commande "ls -1v", pour que l'affichage se fasse en respectant l'ordre de la numérotation :
Pour ton autre question, pas besoin de stocker le résultat dans une variable, il suffit de faire une boucle sur le résultat en passant chaque fichier en argument à ta commande mysql...
Un truc du genre devrait le faire :
Qu'est-ce qui ne fonctionne pas ???
Au cas ou... c'est un UN dans ls -1 et non pas un ELLE minuscule ;-\
Comme les fichiers à trier commencent par un chiffre, mieux vaut utiliser la commande "ls -1v", pour que l'affichage se fasse en respectant l'ordre de la numérotation :
jp@MDK:~/tmpfs ssh$ ls -1 15_toto.sql 16_toto.sql 17_toto.sql 18_toto.sql 19_toto.sql 1_toto.sql 20_toto.sql 21_toto.sql 22_toto.sql 23_toto.sql 24_toto.sql 25_toto.sql 2_toto.sql 3_toto.sql 4_toto.sql 5_toto.sql jp@MDK:~/tmpfs ssh$ ls -1v 1_toto.sql 2_toto.sql 3_toto.sql 4_toto.sql 5_toto.sql 15_toto.sql 16_toto.sql 17_toto.sql 18_toto.sql 19_toto.sql 20_toto.sql 21_toto.sql 22_toto.sql 23_toto.sql 24_toto.sql 25_toto.sql jp@MDK:~/tmpfs ssh$
Pour ton autre question, pas besoin de stocker le résultat dans une variable, il suffit de faire une boucle sur le résultat en passant chaque fichier en argument à ta commande mysql...
Un truc du genre devrait le faire :
jp@MDK:~/tmpfs ssh$ for fich in $(ls -1v | sed -n '2,5p'); do echo "mysql -u toto -ptata bdd < ${fich}";done mysql -u toto -ptata bdd < 2_toto.sql mysql -u toto -ptata bdd < 3_toto.sql mysql -u toto -ptata bdd < 4_toto.sql mysql -u toto -ptata bdd < 5_toto.sql jp@MDK:~/tmpfs ssh$Bien sur adapter la commande à tes besoins, et sortir le "echo"...
Merci beaucoup sa fonctionne très bien !!
Juste une petite précision qui ma un peux chagriné :
dans mon cas précis les fichiers commensais par 8409 8411 ect ...
sauf que sed marche très bien mais en fonction de la position du fichier dans le résutat de la commande ls
c'est à dire que si j'ai un
$ ls -1
8409_toto.sql
8411_toto.sql
8412_toto.sql
9876_toto.sql
et que je fais un
$ ls -1 | sed -n '1,2p'
8409_toto.sql
8411_toto.sql
8412_toto.sql
9876_toto.sql
j'aurais :
8409_toto.sql
8411_toto.sql
Donc voilà ;)
Mais grâce à toi j'ai réussi a faire ce que je voulais donc un GRAND MERCI !!!!!!!!
dernière petite question, est il possible de faire un ls qui donne un numéro au fichier celon sa position dans l'affichage ?
comme :
$ ...
1 8409_toto.sql
2 8411_toto.sql
3 8412_toto.sql
4 9876_toto.sql
Juste une petite précision qui ma un peux chagriné :
dans mon cas précis les fichiers commensais par 8409 8411 ect ...
sauf que sed marche très bien mais en fonction de la position du fichier dans le résutat de la commande ls
c'est à dire que si j'ai un
$ ls -1
8409_toto.sql
8411_toto.sql
8412_toto.sql
9876_toto.sql
et que je fais un
$ ls -1 | sed -n '1,2p'
8409_toto.sql
8411_toto.sql
8412_toto.sql
9876_toto.sql
j'aurais :
8409_toto.sql
8411_toto.sql
Donc voilà ;)
Mais grâce à toi j'ai réussi a faire ce que je voulais donc un GRAND MERCI !!!!!!!!
dernière petite question, est il possible de faire un ls qui donne un numéro au fichier celon sa position dans l'affichage ?
comme :
$ ...
1 8409_toto.sql
2 8411_toto.sql
3 8412_toto.sql
4 9876_toto.sql
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 895
16 nov. 2009 à 15:28
16 nov. 2009 à 15:28
Essaie avec :
ls -1v | nl
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
C'est bien sa !!!
Encore merci en tout cas, je ne poste que très rarement sur les forums car je préfère trouver la solution de moi même mais là je dois avouer que sa ma donné une bonne leçon et ma fais gagner beaucoup de temps !!
Merci pour tous :)
Encore merci en tout cas, je ne poste que très rarement sur les forums car je préfère trouver la solution de moi même mais là je dois avouer que sa ma donné une bonne leçon et ma fais gagner beaucoup de temps !!
Merci pour tous :)
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 895
16 nov. 2009 à 16:02
16 nov. 2009 à 16:02
De rien, c'est fait pour ;-))