Twitter iPhone pliant OnePlus 12 PS5 Disney+ Orange Livebox Windows 11 ChatGPT

[HS] si mon fichier contient la premiere ligne

14 réponses
Avatar
David Martin
--f403045ebee62340330550e35e47
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Bonjour =C3=A0 tous,

C'est tout b=C3=AAte mais je ne vois pas comment je peux faire un controle =
sur
une ligne.

J'ai un fichier, dans lequel je g=C3=A9n=C3=A9re une ligne d'=C3=A9x=C3=A9c=
ution (un resultat
d'un bash), si j'en ai plusieurs
c'est que j'ai un probl=C3=A8me dans l'=C3=A9x=C3=A9cution de mon script.

Comment puis-je faire pour controler si j'ai strictement et seulement une
seule ligne dans ce fichier,
mais si j'en ai plusieurs =C3=A7a ne va pas ?

echo "c'est bon"


echo "c'est pas bon"

Je pourrais faire un controle si il est vide ou pas, mais ce n'est pas =C3=
=A7a
dont j'ai besoin

Si vous avez une id=C3=A9e ?


--=20
david martin

--f403045ebee62340330550e35e47
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Bonjour =C3=A0 tous,<div><br></div><div>C&#39;est tout b=
=C3=AAte mais je ne vois pas comment je peux faire un controle sur une lign=
e.</div><div><br></div><div>J&#39;ai un fichier, dans lequel je g=C3=A9n=C3=
=A9re une ligne d&#39;=C3=A9x=C3=A9cution (un resultat d&#39;un bash), si j=
&#39;en ai plusieurs</div><div>c&#39;est que j&#39;ai un probl=C3=A8me dans=
l&#39;=C3=A9x=C3=A9cution de mon script.</div><div><br></div><div>Comment =
puis-je faire pour controler si j&#39;ai strictement et seulement une seule=
ligne dans ce fichier,</div><div>mais si j&#39;en ai plusieurs =C3=A7a ne =
va pas ?</div><div><br></div><div>echo &quot;c&#39;est bon&quot;</div><div>=
<br></div><div><br></div><div>echo &quot;c&#39;est pas bon&quot;</div><div>=
<br></div><div>Je pourrais faire un controle si il est vide ou pas, mais ce=
n&#39;est pas =C3=A7a dont j&#39;ai besoin</div><div><br></div><div>Si vou=
s avez une id=C3=A9e ?</div><div><br></div><div><div><br></div>-- <br><div =
class=3D"gmail_signature" data-smartmail=3D"gmail_signature"><div dir=3D"lt=
r">david martin<div><br></div></div></div>
</div></div>

--f403045ebee62340330550e35e47--

10 réponses

1 2
Avatar
Yves Rutschle
On Thu, Jun 01, 2017 at 12:19:10PM +0200, David Martin wrote:
Comment puis-je faire pour controler si j'ai strictement et seulement une
seule ligne dans ce fichier,

`wc -l` compte le nombre de lignes, donc:
if wc -l fichier | grep -q "^1 " ; then echo "1 ligne" ; else echo "pas 1 seule ligne"; fi
Y.
Avatar
Daniel Caillibaud
Le 01/06/17 à 12:47, Lorenzo Bernardi r> a écrit :
LB> Bonjour,
LB>
LB> wc -l te donne le nombre de ligne dans un fichier typiquement
LB>
LB> wc -l monfichier.txt
LB>
LB> 1234 monfichier.txt
et wc -l < monfichier.txt => 1234
LB> donc
LB>
LB> wc -l monfichier.txt | cut -c1,2 te renvoie les deux premier caractere.
LB> Toi tu veux "1 " pas seuluement le premier parceque sinon tout les
LB> fichier dont le nombre de ligne commence par 1 passe le test.
LB>
LB> if [ $(wc -l monfichier.txt | cut -c1,2) -eq 1 ]; then
plus court avec
[ "$(wc -l < monfichier.txt)" == "1" ] && echo 'ok' || echo 'KO'
--
Daniel
On reconnaît un grand enseignant au nombre d'élèves qui l'on t dépassé.
Avatar
David Martin
--001a114a7370a66e7d0550e4ccb4
Content-Type: text/plain; charset="UTF-8"
wc -l monfichier.txt | cut -c1,2
me retourne toujours 0
Daniel, je test ta solution
--
david martin
--001a114a7370a66e7d0550e4ccb4
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir="ltr"><div>wc -l monfichier.txt | cut -c1,2</div><div><br></div> <div>me retourne toujours 0</div><div><br></div><div>Daniel, je test ta sol ution</div><div><br></div><div class="gmail_extra"><div><br></div>-- <br> <div class="gmail_signature" data-smartmail="gmail_signature"><div dir ="ltr">david martin<div><br></div></div></div>
</div></div>
--001a114a7370a66e7d0550e4ccb4--
Avatar
Lorenzo Bernardi
On 06/01/2017 01:45 PM, Daniel Caillibaud wrote:
[ "$(wc -l < monfichier.txt)" == "1" ] && echo 'ok' || echo 'KO'

bien vu l'utilisation du < mais c'est un petit peu dangereux. Si on
l'oublie pas plus rien ne passe le test.
L.
Avatar
David Martin
--001a1140189ec797f50550e50c5f
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
avec ou sans ça ne fonctionne pas
--
david martin
--001a1140189ec797f50550e50c5f
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir="ltr">avec ou sans ça ne fonctionne pas<div class="gmail_ extra"><br clear="all"><div><br></div>-- <br><div class="gmail_signatur e" data-smartmail="gmail_signature"><div dir="ltr">david martin<div><br ></div></div></div>
</div></div>
--001a1140189ec797f50550e50c5f--
Avatar
Lorenzo Bernardi
Re'
On 06/01/2017 02:35 PM, David Martin wrote:
# cat supMajUserEmargos
1 utilisateur(s) EMARGOS trouv�(s), 0 mis � jour, 1 non trouv�(s) dans
le LDAP, 0 mise � jour non effectu�e
# vi supMajUserEmargos
1 utilisateur(s) EMARGOS trouvé(s), 0 mis à jour, 1 non trouvé(s) dans
le LDAP, 0 mise à jour non effectuée
le wc -l retourne 0 quoi qu'il arrive.
# wc -l supMajUserEmargos cut -c 1,2
0 108 supMajUserEmargos
wc: cut: Aucun fichier ou dossier de ce type
wc: 1,2: Aucun fichier ou dossier de ce type
0 108 total

en fait il faut le | entre wc -l supMajUserEmargos et cut -c 1,2 tu dois
en fait taper
wc -l supMajUserEmargos | cut -c 1,2
ce qui devrait te donner
0 supMajUserEmargos
car en fait si tu ne met pas le | il te donne la commande
wc -l -c supMajUserEmargos cut 1,2
et cette commande te donne le nombre de ligne -l et de bytes -c.
Tu n'as pas de ligne le premier 0 parceque tu ne finis pas par un n ton
fichier. En fait wc -l compte le nombre de new line n. Comment crees tu
ton fichier?
cordialement
Avatar
Yves Rutschle
On Thu, Jun 01, 2017 at 02:09:46PM +0200, David Martin wrote:
Yves j'y ai cru ;-)
alors que le fichier en contient une et une seule.

J'avais testé, et "ça marche chez moi"(TM).
Que te renvoie wc -l?
Qu'y a-t-il dans ton fichier quand tu crois qu'il y a une
ligne? Pour voir en hexa:
xxd fichier.txt
Y.
Avatar
Charles Plessy
Bonjour, c'est vendredi !
pourquoi s'ennuyer avec des outils standards alors qu'on a Perl 6 ?
$ cat > toto3 <<__FIN__
ligne 1
ligne 2
ligne 3
__FIN__

$ perl6 -ne 'state $i++ ; exit 1 if $i > 1' toto3 && echo "Une seule ligne."
$ cat > toto1 <<__FIN__
ligne 1
__FIN__
$ perl6 -ne 'state $i++ ; exit 1 if $i > 1' toto1 && echo "Une seule ligne."
Une seule ligne.
Bonne fin de semaine,
Conclusion, apt install perl6.
Charles
--
Charles Plessy
Tsurumi, Kanagawa, Japan
Avatar
Charles Plessy
Le Fri, Jun 02, 2017 at 09:53:25AM +0900, Charles Plessy a écrit :
$ cat > toto3 <<__FIN__
ligne 1
ligne 2
ligne 3
__FIN__


Oups, sans les chevrons ci-dessus:
$ cat > toto3 <<__FIN__
ligne 1
ligne 2
ligne 3
__FIN__
Désolé pour le bruit,
(Ça doit être l'effet vendredi)
--
Charles
Avatar
David Martin
--94eb2c1ab3e242b9390550f491ed
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lorenzo,
merci pour ton annalyse, je ne construit pas le fichier, c'est une
application métier.
Je vais essayer de le rajouter le n pour voir
--
david martin
--94eb2c1ab3e242b9390550f491ed
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">Lore nzo,</div><div class="gmail_quote"><br></div><div class="gmail_quote">m erci pour ton annalyse, je ne construit pas le fichier, c&#39;est une appli cation métier.</div><div class="gmail_quote"><br></div><div class= "gmail_quote">Je vais essayer de le rajouter le n pour voir</div><div clas s="gmail_quote"><br></div>-- <br><div class="gmail_signature" data-smar tmail="gmail_signature"><div dir="ltr">david martin<div><br></div></div ></div>
</div></div>
--94eb2c1ab3e242b9390550f491ed--
1 2