Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 03/04/2018, à 23:01

Eva.exe

Tester si une variable contien un caractère.

Bonjour a tous !

Je commence a me lancer dans le bash, enfin, dans la programmation, et aujourd'hui mon premier besoin nécessitant des compétences :
Filtrer un fichier texte ligne par ligne,

en gros

Ajout de la ligne dans $var
IF $var contien un caractère NON alphanumérique
alors ligne suivante
si non afficher $var
ligne suivante

Je bloque a la ligne IF,
en effet, je n'ai aucune idée de comment réaliser cette opération,
Pour le reste, le script ressemblerais a :

#! /bin/bash

while read line
if [ ! "$var contient variable alphanumérique" ]
then
echo -e "$line\n"
done < test.txt

Hors ligne

#2 Le 03/04/2018, à 23:19

Watael

Re : Tester si une variable contien un caractère.

salut,

et pourquoi pas un simple grep sur le fichier ?


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 03/04/2018, à 23:26

DonutMan75

Re : Tester si une variable contien un caractère.

Hello,
je n'ai pas de Linux sous la main pour tester... mais est-ce que la ligne suivante ne ferait pas l'affaire ?

#! /bin/bash

while read line
[[ ! "$var" =~ [0-9] ]] && echo -e "$line\n"
< test.txt

Concernant l'opérateur "=~", voir par exemple : https://unix.stackexchange.com/question … at-does-do

Par ailleurs, if [ toto ] est redondant, on peut juste laisser [ toto ]


Bon courage pour la suite smile

Bonne soirée,

Donut

Hors ligne

#4 Le 03/04/2018, à 23:56

Eva.exe

Re : Tester si une variable contien un caractère.

Bonsoir,

Concernant grep j'ai déja essayer, ca ne me convient pas.

Pour clarifier la chose,
J'ai un fichier text contenant plusieurs ligne
je veut que si la ligne contien STRICTEMENT un caractère ASII, alors elle est affiché,
J'ai un peut avancé
[\x00-\x7F] == caractère ASII

#! /bin/bash
while read line
do
if [[ $line =~ [\x00-\x7F] ]]
then 
echo $line
fi
done < test.txt

le probléme c'est que ce script affiche toute les ligne contenant des char ASSI, meme si elle contien aussi des char non ASII,
Est ce que le souci vient de l'opérande ?


Merci,

Dernière modification par Eva.exe (Le 04/04/2018, à 00:02)

Hors ligne

#5 Le 04/04/2018, à 00:39

Eva.exe

Re : Tester si une variable contien un caractère.

Voila quelque chose qui fonctionne pas trop mal :

#! /bin/bash

while read line
do
if [[ "$line" =~ [^[\ -~A-Za-z0-9]+ ]] ; then 
peon="1" ;
else
echo $line
fi
done < test

Par contre, par quoi je peut remplacer "peon=1"
Il faudrait que le script passe a l'instruction suivante

Dernière modification par Eva.exe (Le 04/04/2018, à 00:40)

Hors ligne

#6 Le 04/04/2018, à 00:59

Watael

Re : Tester si une variable contien un caractère.

Concernant grep j'ai déja essayer, ca ne me convient pas.

pourquoi ? quelle commande grep as-tu essayée ?
parce que, grep est justement fait pour ça : afficher les lignes (plus ou moins) qui correspondent à un motif !

c'est quoi un caractère "ASII" ?
tu parlais de caractère alphanumérique.

grep '^[[:alnum:]]' tonFichier

cf. man 7 regex


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#7 Le 04/04/2018, à 07:20

pingouinux

Re : Tester si une variable contien un caractère.

Bonjour,
@Eva.exe : Peux-tu donner un exemple de quelques lignes, avec le résultat que tu souhaites ?

Édité :
Si j'ai bien compris, peut-être ceci

LC_COLLATE=C egrep "^[ -~]+$" fichier

Dernière modification par pingouinux (Le 04/04/2018, à 09:37)

Hors ligne