#26 Le 30/01/2022, à 11:42
- Frankkunst
Re : [RESOLU]traitement "chaîne de caratères"
Bonjour Watael,
non, pas ls | grep.
plutôt un tableau :
fichiersINSEE=( "$dossier"/deces-[0-9][0-9][0-9][0-9].txt )
# et on teste son nombre d'éléments
(( ${#fichiersINSEE[*]} )) || errQuit "pas de fichiers INSEE"
J'ai fais de multiple test et le code de retour de
(( ${#fichiersINSEE[*]} ))
est toujours "0" alors la suite de la ligne ne s’exécute jamais
Alors que le retour d'un
echo ${#fichiersINSEE[*]}
est bien de 52 dans le bon dossier, il est de "1" dans d'autres dossiers qui ne contiennent pas ce type de fichier !...
Où est le problème ?
Dernière modification par Frankkunst (Le 30/01/2022, à 11:43)
C'est en forgeant que l'on devient forgerons ...
et
...petit à petit l'oiseau fait son nid !
Hors ligne
#27 Le 30/01/2022, à 12:49
- Frankkunst
Re : [RESOLU]traitement "chaîne de caratères"
J'ai refait différents contrôles
Et en fin de compte lorsque le dossier est vide, le tableau prend le modèle pour initialiser l'élément indice 0
Voilà en utilisant ce script :
#!/bin/bash
fichiersINSEE=( /home/frank/DOSStest/deces-[0-9][0-9][0-9][0-9].txt )
echo ${#fichiersINSEE[*]} "est le retour de \"echo \${#fichiersINSEE[*]}\""
echo ${!fichiersINSEE[*]} "est le retour de \"echo \${!fichiersINSEE[*]}\""
echo ${fichiersINSEE[0]} "est le retour de \"echo \${fichiersINSEE[0]}\""
(( ${#fichiersINSEE[*]} )) ; echo $? "est le code de retour de \"(( \${#fichiersINSEE[*]} ))\""
exit
dans le dossier vide on a :
frank@ordiport:~$ testPresent
1 est le retour de "echo ${#fichiersINSEE[*]}"
0 est le retour de "echo ${!fichiersINSEE[*]}"
/home/frank/DOSStest/deces-[0-9][0-9][0-9][0-9].txt est le retour de "echo ${fichiersINSEE[0]}"
0 est le code de retour de "(( ${#fichiersINSEE[*]} ))"
frank@ordiport:~$
et en y mettant deux fichiers on obtient :
frank@ordiport:~$ testPresent
2 est le retour de "echo ${#fichiersINSEE[*]}"
0 1 est le retour de "echo ${!fichiersINSEE[*]}"
/home/frank/DOSStest/deces-2019.txt est le retour de "echo ${fichiersINSEE[0]}"
0 est le code de retour de "(( ${#fichiersINSEE[*]} ))"
frank@ordiport:~$
donc l'élément indice [0] prend bien la valeur du modèle quand le dossier est vide !
C'est en forgeant que l'on devient forgerons ...
et
...petit à petit l'oiseau fait son nid !
Hors ligne
#28 Le 30/01/2022, à 13:35
- Watael
Re : [RESOLU]traitement "chaîne de caratères"
pour éviter ça : shopt -s nullglob, ainsi, quand il n'y a pas de fichiers correspondant au motif, le tableau sera vide.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#29 Le 30/01/2022, à 13:48
- Frankkunst
Re : [RESOLU]traitement "chaîne de caratères"
Merci Watael, je regarde ça !
Bonne journée
C'est en forgeant que l'on devient forgerons ...
et
...petit à petit l'oiseau fait son nid !
Hors ligne
#30 Le 31/01/2022, à 10:01
- Frankkunst
Re : [RESOLU]traitement "chaîne de caratères"
Bonjour Watael,
pour éviter ça : shopt -s nullglob, ainsi, quand il n'y a pas de fichiers correspondant au motif, le tableau sera vide.
c'est exact et je te remercie, mais j'ai dû le désactiver après avec un "shopt -u nullglob" car cela causait des problèmes plus loin dans le script .
Alors voici mon script en ayant tenu compte de vos remarques :
#!/bin/bash
#-------------------Recherche et extraction de données des fichier.txt www.data.gouv.fr décès entre 1970 et 2021----------------------
#------------------------------------- Auteur Frankkunst / Date 26 janvier 2022 ----------------------------------------------------
err_abandon=100
err_mauvarg=65
err_sanfich=66
mondoss="/home/$USER/TEMPNECRO"
mkdir -p "$mondoss"
presentation () { # texte de présentation et info
cat <<eof
*** NECRODC *** auteur : Frankkunst version 01.2022
Script de recherche des personnes décédées en France entre 1970 et 2021
Étant prévu pour traiter exclusivement les fichiers .txt fournis sur www.data.gouv.fr, la présence des fichiers :
deces-AAAA.txt (52 fichiers 1970 à 2021)"
commune2021.csv
pays2021.csv
est indispensable à son fonctionnement
Selon votre connection internet leurs téléchargement peut s'avérer long ... 5,3 Go
Pour continuer appuyer sur "Valider" Pour abandonner sur "Annuler"
eof
}
declare -a tablan=( {1970..2021} )
declare -a tabldecis=( "continuer-la-recherche" "arrêter-le-programme" )
#--------------------------------* Présentation *-------------------------------------------------------------
zenity --title=INFORMATION --text-info --width="650" --height="450" --filename <(presentation) 2>/dev/null
if [ $? -eq 1 ]
then
exit $err_abandon
fi
clear
#--------------------------------* entrée arguments et contrôle *----------------------------------------------
dossier=$(zenity --file-selection --directory --title="Veuillez choisir le dossier de recherche" 2>/dev/null)
shopt -s nullglob
fichiersINSEE=( "$dossier"/deces-[0-9][0-9][0-9][0-9].txt )
if [ ${#fichiersINSEE[*]} -eq 0 ]
then
read -p "Pas de fichier INSEE ! Appuyer sur ENTRER"
clear
$0
exit $err_sanfich
fi
shopt -u nullglob
annee=$(zenity --list --text="Veuillez selectionner l'année" --column="ANNEE" ${tablan[*]} 2>/dev/null)
nomprenom=$(zenity --entry --text="NOM PRENOM à rechercher" --width="450" --height="140" 2>/dev/null)
set $nomprenom
nom=$1
prenom=$2
shopt -s extglob
case "$nom" in # controle format du "NOM"
+([[:upper:]]) ) echo -e "\v\tVous recherchez une personne dénomée : "$nom ;; # controle que le nom soit en majuscule
* ) clear ; echo -e "\v\v\v\v\v\tVous devez entrer un nom en \e[0;31;01m\"MAJUSCULE\"\e[30;00m uniquement, si c'est un nom composé entrez seulement la première partie\v\v\v\t\t\t"
read -p " Appuyer sur ENTRER pour recommencer" ; clear
$0 ; exit $err_mauvarg
esac
if [ ${#prenom} -ne 0 ]
then
case "$prenom" in # controle format du "PRENOM"
+([[:upper:]]) ) echo -e "\v\tVous recherchez une personne prénomée : "$prenom ;; # controle prénom soit en majuscule
* ) echo -e "\v\v\v\v\v\tVous devez entrer un prénom en \e[0;31;01m\"MAJUSCULE\"\e[30;00m uniquement la première partie \v\v\v\t\t\t"
read -p " Appuyer sur ENTRER pour recommencer" ; clear
$0 ; exit $err_mauvarg
esac
fi
#------------------------------------* positionnement dans le dossier *----------------------------------------
cd "$dossier"
echo -n -e "\v\v\tDans : $PWD\tsur l'année $annee\r\v\v"
#----------------------------* début du travail de recherche dans les fichiers *-------------------------------
suff=.txt
for i in $(ls *"$annee"$suff)
do
#---------------------------------------* découpage donnée *---------------------------------------------------
grep -a "^$nom.*$prenom" $i >"$mondoss"/tempDC
# garde les lignes commençant par le "NOM" demandé et "PRENOM" si précisé
#----------------------------------------* tri argument *------------------------------------------------------
n=0 # amorçage compteur de lignes trouvées
while read ligne
do
n=$[ $n+1 ]
echo $n
echo -n -e "\rNom : "${ligne%%"*"*}; ligneX=${ligne##*"*"}; echo -n -e " Prenom : "${ligneX%%"/"*}
sexe=${ligne:80:1}
if [[ $sexe -eq 1 ]] # controle le sexe et le nomme
then
echo -n -e "\tgenre : \033[;;46mHomme\033[0m"
else
echo -n -e "\tgenre : \033[;;42mFemme\033[0m"
fi
echo -n -e "\tDate de naissance : "${ligne:87:2}"/"${ligne:85:2}"/"${ligne:81:4}"\tLieu : "${ligne:89:5}
com=${ligne:94:30} ; commune=${com%% *}
echo -e "\tCommune : $commune"
pay=${ligne:124:30} ; pay1=${pay%% *}
if [[ ${#pay1} -eq 0 ]] # teste si la donnée "Pays" est vide
then
echo -n "Pays : FRANCE"
else
echo -n "Pays : $pay"
fi
echo -n -e "\nDate de décès : "${ligne:160:2}"/"${ligne:158:2}"/"${ligne:154:4}"\tLieu : "${ligne:162:5}
codecom=${ligne:162:5}
grep $codecom $PWD/commune2021.csv > /dev/null
codesortx=$?
if [[ $codesortx -eq 0 ]]
then
sortiecode=$(grep $codecom $PWD/commune2021.csv)
retcom=(*,*,*,*,*,*,*,)
communedc=${sortiecode#$retcom}
echo -e "\tCommune de décès : "${communedc%%,*}
else
sortiecodepays=$(grep $codecom $PWD/pays2021.csv)
retpays=(*,*,*,*,*,)
paysdc=${sortiecodepays#$retpays}
echo -e "\tPays de décès : "${paysdc%%,*}
fi
act=${ligne:167:9} ; acte=${act%% *}
echo -e "\tacte de décès n° $acte\r\v\v"
done < "$mondoss"/tempDC
echo $n &>>"$mondoss"/compte-resultat2
done
declare -i z=0
for i in $(cat $mondoss/compte-resultat2); do (( z = $z + $i )) ; done
echo -e "\v\v\tIl y a $z résultat(s)\v\t"
rm "$mondoss"/compte-resultat2
decision=$(zenity --list --text="Que voulez-vous faire ?" --column="décision" ${tabldecis[*]} 2>/dev/null)
case $decision in
continuer-la-recherche ) clear ; $0 ;;
arrêter-le-programme )
esac
exit 0
Dernière modification par Frankkunst (Le 31/01/2022, à 15:44)
C'est en forgeant que l'on devient forgerons ...
et
...petit à petit l'oiseau fait son nid !
Hors ligne
#31 Le 31/01/2022, à 10:20
- Watael
Re : [RESOLU]traitement "chaîne de caratères"
j'ai dû le désactiver après avec un "shopt -u nullglob" car cela causait des problèmes plus loin dans le script
lesquels ?
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#32 Le 31/01/2022, à 10:29
- Frankkunst
Re : [RESOLU]traitement "chaîne de caratères"
Dans cette section :
if [[ $codesortx -eq 0 ]]
then
sortiecode=$(cat $PWD/commune2021.csv | grep $codecom)
retcom=(*,*,*,*,*,*,*,)
communedc=${sortiecode#$retcom}
echo -e "\tCommune de décès : "${communedc%%,*}
else
sortiecodepays=$(cat $PWD/pays2021.csv | grep $codecom)
retpays=(*,*,*,*,*,)
paysdc=${sortiecodepays#$retpays}
echo -e "\tPays de décès : "${paysdc%%,*}
fi
Je ne tombait plus dans la bonnes plage des données de fichier .csv et me sortait au lieu de la commune la donnée "COM"
Mais maintenant c'est ok
Merci encore à tous
C'est en forgeant que l'on devient forgerons ...
et
...petit à petit l'oiseau fait son nid !
Hors ligne
#33 Le 31/01/2022, à 10:44
- Watael
Re : [RESOLU]traitement "chaîne de caratères"
tu sais que le cut, ici :
cat $i | grep -a "^$nom" | grep -w "$prenom" | cut -b 1-80,81,82-89,90-94,95-124,125-154,155-162,163-167,168-176 > "$mondoss"/tempDC
ne sert à rien* ?
tu "découpes" la ligne selon les spécifications du fichier, mais tu "découpes" la ligne entière : il n'y a aucune extraction de données !
--
* le cat non plus.
et je ne suis pas convaincu par l'enchaînement de greps.
pourquoi pas grep "^$nom*$prenom" "$ficherDB" ?
et pour éviter l'emploi de fichiers temporaires, je "collerais" ça dans un tableau, éventuellement avec mapfile...
Dernière modification par Watael (Le 31/01/2022, à 10:45)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#34 Le 31/01/2022, à 11:18
- Frankkunst
Re : [RESOLU]traitement "chaîne de caratères"
tu sais que le cut, ici :
cat $i | grep -a "^$nom" | grep -w "$prenom" | cut -b 1-80,81,82-89,90-94,95-124,125-154,155-162,163-167,168-176 > "$mondoss"/tempDC
ne sert à rien* ?
C'est juste, mais au moment de la création comme je testais au fur et à mesure, cela ma bien aidé au montage des commande suivante
Je viens de modifier , j'ai supprimé le "cut ..."
Pour la succession de "grep", j'en conviens c'est un peu lourd mais j'ai fait pas mal d'essais infructueux , qui ne me satisfaisait pas !
Par exemple quand lors de la recherche on ne rentre pas de prénom, ou le prénom n'est pas complet et le nombre de sortie est trop important
Alors j'entends bien ta remarque et j’essaie d'améliorer la chose ...
C'est en forgeant que l'on devient forgerons ...
et
...petit à petit l'oiseau fait son nid !
Hors ligne
#35 Le 31/01/2022, à 11:40
- Frankkunst
Re : [RESOLU]traitement "chaîne de caratères"
Watael j'ai fait de nouveaux test, un petit exemple je recherche un M. TARTANPION bon c'est pas évident prenons un nom commençant par "TARTAN" .
Voilà, je me suis mis dans le dossier et :
frank@ordiport:~/Data_Deces/fichier_deces$ grep "^TARTAN" "deces-2020.txt"
TARTANE*LUCIEN JEAN-MARIE/ 11957050375114PARIS 14E ARRONDISSEMENT 202012110281098
frank@ordiport:~/Data_Deces/fichier_deces$ grep "^TARTAN*LUCIEN" "deces-2020.txt"
frank@ordiport:~/Data_Deces/fichier_deces$ echo $?
1
frank@ordiport:~/Data_Deces/fichier_deces$
Donc la recherche avec un grep "^TARTAN*LUCIEN" "deces-2020.txt" ne fonctionne pas même en mettant le nom complet "TARTANE*LUCIEN" !?...
Est-ce "*" qui dérange car le modèle juste n'est pas retrouvé avec le grep ?
C'est en forgeant que l'on devient forgerons ...
et
...petit à petit l'oiseau fait son nid !
Hors ligne
#36 Le 31/01/2022, à 11:45
- Frankkunst
Re : [RESOLU]traitement "chaîne de caratères"
J'ai testé avec "TARTANE*" ou "TAR*" et pas de problème, mais si je mets des caractère après l' * plus de résultat !
C'est en forgeant que l'on devient forgerons ...
et
...petit à petit l'oiseau fait son nid !
Hors ligne
#37 Le 31/01/2022, à 12:13
- Frankkunst
Re : [RESOLU]traitement "chaîne de caratères"
Avec
grep -a "^$nom" $i | grep -w "$prenom" >"$mondoss"/tempDC
C'est bon ça fait le job !
C'est en forgeant que l'on devient forgerons ...
et
...petit à petit l'oiseau fait son nid !
Hors ligne
#38 Le 31/01/2022, à 12:36
- Frankkunst
Re : [RESOLU]traitement "chaîne de caratères"
Avec
grep -a "^$nom[*]$prenom" $i >"$mondoss"/tempDC
cela fonctionne, mais plus restrictif obligation de rentrer le nom complet, donc cela ne me satisfait pas vraiment
Si on ne se souvient pas de l'orthographe exacte du nom en entrant seulement le début dans la solution précédente on a des résultats
C'est en forgeant que l'on devient forgerons ...
et
...petit à petit l'oiseau fait son nid !
Hors ligne
#39 Le 31/01/2022, à 12:47
- Frankkunst
Re : [RESOLU]traitement "chaîne de caratères"
Encore un grand merci à tous
Mon script a gagné en vélocité et clarté, c'est top
Dernière modification par Frankkunst (Le 31/01/2022, à 12:49)
C'est en forgeant que l'on devient forgerons ...
et
...petit à petit l'oiseau fait son nid !
Hors ligne
#40 Le 31/01/2022, à 12:55
- Vobul
Re : [RESOLU]traitement "chaîne de caratères"
Et ça ne t'intéresserait pas de mettre les données dans une base SQL (genre sqlite ou mariadb/mysql) ? Ça permettrait de query super facilement avec toute la puissance du langage SQL. bash ça va un moment mais bon
Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM
Hors ligne
#41 Le 31/01/2022, à 13:05
- Frankkunst
Re : [RESOLU]traitement "chaîne de caratères"
Salut
Et ça ne t'intéresserait pas de mettre les données dans une base SQL (genre sqlite ou mariadb/mysql) ? Ça permettrait de query super facilement avec toute la puissance du langage SQL. bash ça va un moment mais bon tongue
C'est sympa à toi de me parler chinois , mais SQL , query ?... J'en suis à l'apprentissage du langage bash .
C'est en forgeant que l'on devient forgerons ...
et
...petit à petit l'oiseau fait son nid !
Hors ligne
#42 Le 31/01/2022, à 13:12
- pingouinux
Re : [RESOLU]traitement "chaîne de caratères"
Bonjour,
frank@ordiport:~/Data_Deces/fichier_deces$ grep "^TARTAN*LUCIEN" "deces-2020.txt"
C'est normal que tu n'obtiennes rien : tu cherches les chaînes TARTANLUCIEN, TARTANNLUCIEN, TARTANNNLUCIEN, etc…
Il faut faire :
grep "^TARTAN.*LUCIEN" "deces-2020.txt"
ou
grep "^TARTANE\*LUCIEN" "deces-2020.txt"
Hors ligne
#43 Le 31/01/2022, à 13:28
- Vobul
Re : [RESOLU]traitement "chaîne de caratères"
Salut
Vobul a écrit :Et ça ne t'intéresserait pas de mettre les données dans une base SQL (genre sqlite ou mariadb/mysql) ? Ça permettrait de query super facilement avec toute la puissance du langage SQL. bash ça va un moment mais bon tongue
C'est sympa à toi de me parler chinois , mais SQL , query ?... J'en suis à l'apprentissage du langage bash .
Bah quand tu y arriveras tu comprendras ma remarque. En gros l'idée c'est que tu utilises ton script bash pour injecter les données de ton fichier texte dans une base de données relationelle. Puis tu peux faire des choses comme :
SELECT firstname, lastname FROM people WHERE death_date < 2000-01-01 AND lastname LIKE 'TARTE%'
Après tu peux même t'amuser à faire une petite interface web avec un champ de recherche et tout !
Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM
Hors ligne
#44 Le 31/01/2022, à 15:23
- Frankkunst
Re : [RESOLU]traitement "chaîne de caratères"
Il faut faire :
grep "^TARTAN.*LUCIEN" "deces-2020.txt"
ou
grep "^TARTANE\*LUCIEN" "deces-2020.txt"
C'est la première solution avec le "." qui est la bonne, avec cette écriture en connaissant seulement le début du nom et un des prénoms la recherche aboutie
Merci beaucoup à toi
C'est en forgeant que l'on devient forgerons ...
et
...petit à petit l'oiseau fait son nid !
Hors ligne
#45 Le 31/01/2022, à 15:49
- Frankkunst
Re : [RESOLU]traitement "chaîne de caratères"
Voilà, j'ai corrigé le script en #30 en supprimant la plupart des "cat"
Et après plusieurs tests , avec cela, j'ai l'impression qu'il n'y a pas d'accros, et qu'il travaille un peu plus vite
Dernière modification par Frankkunst (Le 31/01/2022, à 16:34)
C'est en forgeant que l'on devient forgerons ...
et
...petit à petit l'oiseau fait son nid !
Hors ligne
#46 Le 31/01/2022, à 15:59
- Watael
Re : [RESOLU]traitement "chaîne de caratères"
corrigé
il y a un astérisque littéral dans le champ nomPrénom du fichier pour distinguer (raymond) petitjean (petijean*raymond) de (jean) petit (petit*jean).
c'est celui-là que je t'indiquais.
Dernière modification par Watael (Le 31/01/2022, à 18:25)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#47 Le 31/01/2022, à 16:40
- Frankkunst
Re : [RESOLU]traitement "chaîne de caratères"
Où tu as vu une faute d'orthographe ?... moi jamais
Pas de problème, mais la bonne solution est celle que m'a apporté Pingouinux :
grep "^TARTAN.*LUCIEN" "deces-2020.txt"
Il faut que j'étudie ce fonctionnement de plus près, mais cela fonctionne à merveille !
Merci à vous
C'est en forgeant que l'on devient forgerons ...
et
...petit à petit l'oiseau fait son nid !
Hors ligne
#48 Le 01/02/2022, à 07:07
- MicP
Re : [RESOLU]traitement "chaîne de caratères"
Bonjour
Quelques tests avec différents motifs de recherche :
michel@debbull:~$ cat aeffacer # je vérifie qu'il n'existe pas encore
cat: aeffacer: Aucun fichier ou dossier de ce type
michel@debbull:~$
michel@debbull:~$ cat > aeffacer # je créé le fichier en entrant au clavier chaque ligne et je termine la saisie par Ctrl-D
TARTANE*LUCIEN JEAN-MARIE
TARTANE*LUCIENNE
TARTAN.*LUCIEN
TARTANx*LUCIEN
TARTAN*LUCIEN
TARTANetplusLUCIEN
TARTANNE*LUCIEN
TARTANE LUCIEN
TARTANELUCIEN
TARTANxxxxLUCIEN
TARTANc*LUCIEN
michel@debbull:~$
michel@debbull:~$ grep "^TARTAN.*LUCIEN" aeffacer
TARTANE*LUCIEN JEAN-MARIE
TARTANE*LUCIENNE
TARTAN.*LUCIEN
TARTANx*LUCIEN
TARTAN*LUCIEN
TARTANetplusLUCIEN
TARTANNE*LUCIEN
TARTANE LUCIEN
TARTANELUCIEN
TARTANxxxxLUCIEN
TARTANc*LUCIEN
michel@debbull:~$
michel@debbull:~$ grep "^TARTAN.\*LUCIEN" aeffacer
TARTANE*LUCIEN JEAN-MARIE
TARTANE*LUCIENNE
TARTAN.*LUCIEN
TARTANx*LUCIEN
TARTANc*LUCIEN
michel@debbull:~$
michel@debbull:~$ grep "^TARTANE\*LUCIEN" aeffacer
TARTANE*LUCIEN JEAN-MARIE
TARTANE*LUCIENNE
michel@debbull:~$
michel@debbull:~$ grep "^TARTANE\*LUCIEN " aeffacer
TARTANE*LUCIEN JEAN-MARIE
michel@debbull:~$
michel@debbull:~$ rm aeffacer
michel@debbull:~$
Dernière modification par MicP (Le 01/02/2022, à 07:19)
Hors ligne
#49 Le 01/02/2022, à 09:44
- Frankkunst
Re : [RESOLU]traitement "chaîne de caratères"
Salut MicP
C'est la première solution avec le "." qui est la bonne, avec cette écriture en connaissant seulement le début du nom et un des prénoms la recherche aboutie
en voici l'exemple de recherche sur un fichier de 679'924 décés :
frank@ordiport:~/Data_Deces/fichier_deces$ grep "^TARTAN.*LUCIEN" "deces-2020.txt"
TARTANE*LUCIEN JEAN-MARIE/ 11957050375114PARIS 14E ARRONDISSEMENT 202012110281098
frank@ordiport:~/Data_Deces/fichier_deces$ grep "^TARTAN\*LUCIEN" "deces-2020.txt"
frank@ordiport:~/Data_Deces/fichier_deces$ grep "^TARTANE\*LUCIEN" "deces-2020.txt"
TARTANE*LUCIEN JEAN-MARIE/ 11957050375114PARIS 14E ARRONDISSEMENT 202012110281098
frank@ordiport:~/Data_Deces/fichier_deces$ grep "^TARTANE\*LUCIE" "deces-2020.txt"
TARTANE*LUCIEN JEAN-MARIE/ 11957050375114PARIS 14E ARRONDISSEMENT 202012110281098
frank@ordiport:~/Data_Deces/fichier_deces$ grep "^TARTA.*LUCIEN" "deces-2020.txt"
TARTAIX*LUCIEN HENRI/ 11928122938269LA MURE 2020041283137784
TARTANE*LUCIEN JEAN-MARIE/ 11957050375114PARIS 14E ARRONDISSEMENT 202012110281098
frank@ordiport:~/Data_Deces/fichier_deces$ grep "^TARTA.*LUC" "deces-2020.txt"
TARTAIX*LUCIEN HENRI/ 11928122938269LA MURE 2020041283137784
TARTANE*LUCIEN JEAN-MARIE/ 11957050375114PARIS 14E ARRONDISSEMENT 202012110281098
frank@ordiport:~/Data_Deces/fichier_deces$
Comme tu peux le constater, la solution la plus souple et efficace est grep "^TARTA.*LUC" "deces-2020.txt"
Cela permet de retrouver une personne en ne se souvenant que du début du nom et du début d'un des prénoms
En tous cas, merci bien
Dernière modification par Frankkunst (Le 01/02/2022, à 09:47)
C'est en forgeant que l'on devient forgerons ...
et
...petit à petit l'oiseau fait son nid !
Hors ligne
#50 Le 01/02/2022, à 12:04
- Watael
Re : [RESOLU]traitement "chaîne de caratères"
voilà ! tu as, là, tout ton script :
#!/bin/sh
read -r -p 'nom prénom' nom prenom
grep "^$nom.*$prenom" décès-*.txt
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne