[NOOB] Shell avec plusieurs opérations

Résolu
Poireau -  
 poireau -
Bonjour à tous,

J'ai une petite question de noob mais bon, on a tous commencé un jour non ?

Je voudrais faire un shell qui concatene les fichiers qui s'appellent A110.txt A111.txt etc . et qui ecrit le résulat dans un autre fichier...

je commence comme ça :

#!/bin/bash

for i in A*.txt
do
	cat $i>resultat.txt


Ca me concatene bien, mais la sortie ne me sort que ce qui se trouve sur le premier fichier...

j'ai essayé de faire un sous shell avec les paranthese mais ça ne donne rien.
De la même façon j'ai essayé if et else, pareil nada...
Bref... >Snif!.txt
A voir également:

7 réponses

lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

Je pense que tu trouves juste le contenu de dernier fichier
La rédirection > écrase le contenu à chauqe accès

Essaie >> au lieu de >
1
Poireau
 
Ca marche,
Tu es juste un génie !! Quand je pense que je viens de passer une nuit blanche dessus...

merci =)
0
Poireau
 
Autre petite question (désolé ^^)
le fichier généré contient des ligne qui commencent par "100", "101" etc.

je voubrait faire un grep dynamique de type :
grep "100" fichier.txt |uniq -c |sort -r|cut -f2>N100.txt;
grep "101" fichier.txt |uniq -c |sort -r|cut -f2>N100.txt; etc


mais comment puis je préciser le grep ?? grep "[0-9]" fichier.txt |uniq -c |sort -r|cut -f2>N[0-9].txt; ??
Ca me semble un peu abstrait...
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Re,

Pour grep 101 c'est N101.txt ?!
Pour grep 102 c'est N102.txt?!
etc.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

Pour ton 1er problème, un simple :
cat A*.txt > resultat.txt
aurait amplement suffit ;-))
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

Oui, j'ai pensé au début de lui donner ça.
Mais j'ai pensé de lui montrer l'erreur ;-)
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896 > lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
 
Salut,

T'as bien fait ;-))

Quelque part le prof que tu a été est toujours là ;-))
0
poireau
 
Avant tout, merci pour vos reponses !!

en fait
cat A*.txt > resultat.txt
ne fonctionne pas a cause de la boucle, les résultats ne s'implementent pas mais en utilisant '>>' ca marche =)

Pour ce qui concerne mon 2eme soucis je veux faire un grep dans une boucle en fait. Je n'etais peux etre pas tres clair dans mon explication

quand je fait
grep "100" fichier.txt |uniq -c |sort -r|cut -f2>N100.txt;
grep "101" fichier.txt |uniq -c |sort -r|cut -f2>N100.txt; 
grep "102" fichier.txt |uniq -c |sort -r|cut -f2>N100.txt;
grep "103" fichier.txt |uniq -c |sort -r|cut -f2>N100.txt; 


Ca marche mais j'ai a peu près 8 000 grep a faire donc c'est un peu long.
Donc je cherche à faire une boucle mais je ne maitrise pas tres bien le langage unix.... (et poutant je potasse !!)

j'aimerais faire quelque chose de ce type :

for i in dossier/A*.csv
do
	grep "^[0-9]" head.txt | sort >B*.csv
done


mais ca ne donne rien....

Je precise que chaque ligne de mes fichiers commencent par des chiifres, cequi explique "^[0-9]" :)
Est ce que j'ai fait une faute d'orthographe dans ma boucle ??
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896 > poireau
 
La syntaxe "cat A*.txt > resultat.txt" n'est pas à insérer dans une boucle, mais la commande en elle même produit le même résultat que :
for i in "A*.txt"
do
echo $i >> resultat.txt
done
;-))
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Re,
for i in $(ls dossier/A*.csv)
do
	grep "^[0-9]" $i | sort >B*.csv
done
0
poireau
 
Merci pour la re-réponse :)
arf ca me sort toujours un seul fichier nommé B*.txt snif !
j'essaie d'avoir autant de fichiers B que j'ai de fichiers A

ex : A101 et B101 (B101 étant le resultat du grep)
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570 > poireau
 
Re,

Ben, oui, je t'ai demandé ici http://www.commentcamarche.net/forum/affich 10739774 noob shell avec plusieurs operations?#4
Mais tu n'as jamais répondu
0
poireau > lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
 
Ah OK je n'avais pas compris ta question, je croyais que tu me disais de faire
grep 101 c'est N101.txt puis
grep 102 c'est N102.txt

dc ca faisait beaucoup de grep...
0
poireau
 
J'ai enfin trouvé la solution dc je la poste !

Rappel : le but est de prendre les numero de chaque ligne (qui correspondent a une reference qui peut se repeter) d'un fichier de les classer et le le mettre dans un doc qui s'apelle : le numero du bebut de la ligne.txt.

for i in $(cat monfichier.txt)
do > nada$i.txt
done
# ca genere des fichier vides

for i in $(ls "le dossier ou se trouvent les fichiers" |grep "nada" | sed 's/nada//g")
do cat monfichier.txt |grep "$i" >> Final$i.txt



voilou, merci a ceux qui m'ont aidé =)
0