Probleme avec grep
Résolu
siko
-
lami20j -
lami20j -
Bonjour,
j'essaie de faire un script qui m'affiche les mots qui ont la plus grande taille dans un fichier fournis en argument.
#********* MonScript *********#
#! /bin/bash
long=$(wc -L $1)
grep -E "^[a-z]{$long}" $1
exit
#***************************#
le problème c'est que si je lance ces commandes dans un terminal ça marche ,mais si je les écrit dans un fichier il ne trouve rien.
Je ne sais pas vraiment pas le problème provient d'où ? :S
Merci bien pour votre aide
j'essaie de faire un script qui m'affiche les mots qui ont la plus grande taille dans un fichier fournis en argument.
#********* MonScript *********#
#! /bin/bash
long=$(wc -L $1)
grep -E "^[a-z]{$long}" $1
exit
#***************************#
le problème c'est que si je lance ces commandes dans un terminal ça marche ,mais si je les écrit dans un fichier il ne trouve rien.
Je ne sais pas vraiment pas le problème provient d'où ? :S
Merci bien pour votre aide
8 réponses
-_-
Mais quand même je l'ai rendu executable !!!
c'est pas ca le probleme ,il trouve bien le script mais grep retourne 1 cad rien n'est trouvé .
d'autre part en ligne de commande elle trouve tous les mots
Mais quand même je l'ai rendu executable !!!
c'est pas ca le probleme ,il trouve bien le script mais grep retourne 1 cad rien n'est trouvé .
d'autre part en ligne de commande elle trouve tous les mots
Salut,
Rends ton script verbeux en rajoutant "set -xv" juste après le shebang (#! /bin/bash).
Tu verras peut être où ça coince...
Rends ton script verbeux en rajoutant "set -xv" juste après le shebang (#! /bin/bash).
Tu verras peut être où ça coince...
Merci bien !! j'ai trouvé le probleme grace a set -xv
la variable long :
long=$(wc -L $1)
contenanit après cette commande le nb de mots maximal mais en plus le nom du fichier .
il fallait ajouter :
long=$(wc -L $1)
long=${long%% *}
grep -E "^[a-z]{$long}" $1
et la ca marche ..
Merci bien :)
la variable long :
long=$(wc -L $1)
contenanit après cette commande le nb de mots maximal mais en plus le nom du fichier .
il fallait ajouter :
long=$(wc -L $1)
long=${long%% *}
grep -E "^[a-z]{$long}" $1
et la ca marche ..
Merci bien :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
En revanche si tu as une ligne plus longue qui ne commence pas avec une lettre [a-z] dans le fichier, la commande grep n'affichera rien.
Voir en gras la commande qui affiche le résultat même si la ligne plus longue ne commence pas avec [a-z]
En revanche si tu as une ligne plus longue qui ne commence pas avec une lettre [a-z] dans le fichier, la commande grep n'affichera rien.
Voir en gras la commande qui affiche le résultat même si la ligne plus longue ne commence pas avec [a-z]
lami20j@debian:~$ cat ligne0.txt
a
bb
ccc
dddd
ccc
bbb
a
lami20j@debian:~$ cat long.sh
#!/bin/bash
long=$(wc -L < $1)
grep -E "^[a-z]{$long}" $1
lami20j@debian:~$ sh long.sh ligne0.txt
dddd
lami20j@debian:~$ cat ligne.txt
a
bb
ccc
dddd
ccc
bbb
a
12345678
lami20j@debian:~$ sh long.sh ligne.txt
lami20j@debian:~$ cat long2.sh
#!/bin/bash
grep -E "^[a-z]{$(wc -L <$1)}" $1
lami20j@debian:~$ sh long2.sh ligne0.txt
dddd
lami20j@debian:~$ sh long2.sh ligne.txt
lami20j@debian:~$ cat long3.sh
#!/bin/bash
grep -E "^[a-z]{$(grep '^[a-z]' $1|wc -L)}" $1
lami20j@debian:~$ sh long3.sh ligne0.txt
dddd
lami20j@debian:~$ sh long3.sh ligne.txt
dddd
lami20j@debian:~$