[SHELL] Compaison du nombre de lignes
Résolu/Fermé
xavdoug
Messages postés
21
Date d'inscription
samedi 21 avril 2007
Statut
Membre
Dernière intervention
16 novembre 2007
-
23 avril 2007 à 23:12
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 25 avril 2007 à 08:38
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 25 avril 2007 à 08:38
A voir également:
- [SHELL] Compaison du nombre de lignes
- Classic shell windows 11 - Télécharger - Personnalisation
- Site de vente en ligne particulier - Guide
- Partage de photos en ligne - Guide
- Nombre facile - Télécharger - Outils professionnels
- Excel trier par ordre alphabétique en gardant les lignes - Guide
7 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 897
24 avril 2007 à 08:27
24 avril 2007 à 08:27
Salut,
D'abord quel est ton shell ? Au vu de la syntaxe du C-shell (csh), non ?
Voilà un 1er script pour du "csh" :
Voilà un 2nd script pour un shell "bash" :
D'abord quel est ton shell ? Au vu de la syntaxe du C-shell (csh), non ?
Voilà un 1er script pour du "csh" :
#! /bin/csh set nb1=`sed -n '$=' fich1` set nb2=`sed -n '$=' fich2` set nb3=`sed -n '$=' fich3` if ( "$nb1" == "$nb2" && "$nb1" == "$nb3" ) then echo "OK" else echo "NOK" endifBien évidemment remplacer les noms de fichiers par les tiens. Comme tu peux le voir par rapport à ta syntaxe, pas d'espace lors de la déclaration des variables de part et d'autre du signe égale.
Voilà un 2nd script pour un shell "bash" :
#! /bin/bash nb1=$(sed -n '$=' fich1) nb2=$(sed -n '$=' fich2) nb3=$(sed -n '$=' fich3) if [ "$nb1" == "$nb2" -o "$nb1" == "$nb3" ] then echo "Ok" else echo "Nok" fi;-))
xavdoug
Messages postés
21
Date d'inscription
samedi 21 avril 2007
Statut
Membre
Dernière intervention
16 novembre 2007
24 avril 2007 à 14:29
24 avril 2007 à 14:29
Salut,
Merci pour vos réponses. Je suis effectivement en C-shell.
J'ai essayé la commande :
set nb1=`sed -n '$=' fich1`
echo nb1 = $nb1
Il m'affiche nb1 = (sans rien derrière le =)
Il ne rentre pas non plus dans la boucle if, avec trois fichiers à nombres de lignes égaux.
Avez-vous une idée de solution ? Je continue à chercher de mon côté. Merci beaucoup
Merci pour vos réponses. Je suis effectivement en C-shell.
J'ai essayé la commande :
set nb1=`sed -n '$=' fich1`
echo nb1 = $nb1
Il m'affiche nb1 = (sans rien derrière le =)
Il ne rentre pas non plus dans la boucle if, avec trois fichiers à nombres de lignes égaux.
Avez-vous une idée de solution ? Je continue à chercher de mon côté. Merci beaucoup
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
24 avril 2007 à 14:43
24 avril 2007 à 14:43
Attention de bien changer le "fich1" par le fichier correspondant au tien, hein ? ;-)
Sinon moi de mon côté je n'ai pas de problèmes...
Sinon moi de mon côté je n'ai pas de problèmes...
$ ls fich* fich1 fich2 fich3 $ cat fich* ligne1 ligne2 ligne3 ligne4 ligne1 ligne2 ligne3 ligne4 ligne1 ligne2 ligne3 ligne4 $ cat essai.csh #! /bin/csh set nb1=`sed -n '$=' fich1` set nb2=`sed -n '$=' fich2` set nb3=`sed -n '$=' fich3` if ( "$nb1" == "$nb2" && "$nb1" == "$nb3" ) then echo "OK" else echo "Nok" endif $ ./essai.csh OK $ sed -n '$=' fich1 4 $;-))
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
24 avril 2007 à 14:51
24 avril 2007 à 14:51
Au cas ou, en lieu et place du "sed" tu peux remettre ta ligne ou celle-là :
nb=`wc -l fich1 | cut -d " " -f1`en remplaçant "fich1" par ton fichier ;-))
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
xavdoug
Messages postés
21
Date d'inscription
samedi 21 avril 2007
Statut
Membre
Dernière intervention
16 novembre 2007
24 avril 2007 à 16:48
24 avril 2007 à 16:48
Ca ne marche toujours pas. En entête du programme, j'ai #! /bin/sh
#! /bin/csh -f
J'ai besoin des deux pour mon code.
Je copie mon code, y'a-t-il un problème ?
set nlines_tm=`sed -n "$=" fichier1.dat`
echo nlines_tm=$nlines_tm
set nlines_scf=`sed -n "$=" fichier2.dat`
set nlines_truth=`sed -n "$=" fichier3.dat`
echo ca marche
if ( "$nlines_tm" == "$nlines_scf" && "$nlines_tm" == "$nlines_truth") then
echo "Ok."
else
echo "Not Ok."
fi
Il m'affiche :
nlines_tm =
ca marche
fichier.csh: : command not found (ligne du 'if')
Not Ok
(alors que les fichiers ont le même nombre de lignes et que les noms sont bons).
Merci de ton aide
#! /bin/csh -f
J'ai besoin des deux pour mon code.
Je copie mon code, y'a-t-il un problème ?
set nlines_tm=`sed -n "$=" fichier1.dat`
echo nlines_tm=$nlines_tm
set nlines_scf=`sed -n "$=" fichier2.dat`
set nlines_truth=`sed -n "$=" fichier3.dat`
echo ca marche
if ( "$nlines_tm" == "$nlines_scf" && "$nlines_tm" == "$nlines_truth") then
echo "Ok."
else
echo "Not Ok."
fi
Il m'affiche :
nlines_tm =
ca marche
fichier.csh: : command not found (ligne du 'if')
Not Ok
(alors que les fichiers ont le même nombre de lignes et que les noms sont bons).
Merci de ton aide
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
24 avril 2007 à 17:10
24 avril 2007 à 17:10
Vire le 1er "shebang" (#! /bin/sh ), rajoute "endif" à la place du "fi" et ressaye...
xavdoug
Messages postés
21
Date d'inscription
samedi 21 avril 2007
Statut
Membre
Dernière intervention
16 novembre 2007
24 avril 2007 à 17:46
24 avril 2007 à 17:46
Seulement, si je supprime le /bin/sh, vu que j'ai un case dans mon programme, il m'affiche :
syntax error near unexpected token `;;'
Comment puis-je y remédier ?
syntax error near unexpected token `;;'
Comment puis-je y remédier ?
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
24 avril 2007 à 18:59
24 avril 2007 à 18:59
#! /bin/csh -f set nb1=`sed -n '$=' fich1` set nb2=`sed -n '$=' fich2` set nb3=`sed -n '$=' fich3` echo nlines_tm = $nb1 if ( "$nb1" == "$nb2" && "$nb1" == "$nb3" ) then echo "OK" else echo "Nok" endif switch ($nb1) case 1: echo un breaksw case 2: echo deux breaksw case 3: echo trois breaksw case 4: echo quatre breaksw default: echo "Autre que 1, 2, 3 ou 4." breaksw endsw;-))
xavdoug
Messages postés
21
Date d'inscription
samedi 21 avril 2007
Statut
Membre
Dernière intervention
16 novembre 2007
24 avril 2007 à 21:36
24 avril 2007 à 21:36
Ok merci, j'ai un autre soucis.
Il ne comprend pas la commande 'read' dans :
echo -n "Question ? "
read reponse
Y'a-t-il une commande équivalente en C-shell ?
Merci
Il ne comprend pas la commande 'read' dans :
echo -n "Question ? "
read reponse
Y'a-t-il une commande équivalente en C-shell ?
Merci
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
>
xavdoug
Messages postés
21
Date d'inscription
samedi 21 avril 2007
Statut
Membre
Dernière intervention
16 novembre 2007
24 avril 2007 à 22:47
24 avril 2007 à 22:47
Re-
#! /bin/csh echo -n "Question ? " set reponse=($<) echo echo "La question est : $reponse" echo $ ./try Question ? Pourquoi pas ! La question est : Pourquoi pas !;-))
xavdoug
Messages postés
21
Date d'inscription
samedi 21 avril 2007
Statut
Membre
Dernière intervention
16 novembre 2007
>
xavdoug
Messages postés
21
Date d'inscription
samedi 21 avril 2007
Statut
Membre
Dernière intervention
16 novembre 2007
25 avril 2007 à 04:48
25 avril 2007 à 04:48
Merci beaucoup pour ton aide. Tout est résolu maintenant.
;-)
;-)
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
>
xavdoug
Messages postés
21
Date d'inscription
samedi 21 avril 2007
Statut
Membre
Dernière intervention
16 novembre 2007
25 avril 2007 à 08:38
25 avril 2007 à 08:38
De rien ;-))