Extraction sous linux
Résolu
Utilisateur anonyme
-
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
jipicy Messages postés 40842 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
j'ai besoin d'aide en toute urgences SVP !!
voila, je travaille en ce moment sur un fichier d'appels d'offres. de ce fichier j'ai extrait tous les codes postaux donc j'ai un liste de code postaux de 2299 lignes . voici un extrait ci-aprés (j'ai pris quelques lignes seulement ):
95640
95700
95800
95801
95870
95880
97057
97100
97102
97120
et maintenant je veux garder que les numeros des départements donc les deux premier chiffres. au début je l'ai fait avec "cut -b -2" mais il me donne que les deux premiers chiffres mais le probleme c'est que le département outre-mer se décompose de 3 chiffres et non de 2 , donc comment je fait pour extraire les numeros de département à partir des codes postaux des villes , en sachant que tous les départements se décomposent de deux chiffres apart le departement outre-mer qui se decompose de 3 chiffres. j'ai pensé à la boucle "if" mais je ne sais pas comment ecrire le programme. SVP, j'ai besoin de votre aide. et merci
j'ai besoin d'aide en toute urgences SVP !!
voila, je travaille en ce moment sur un fichier d'appels d'offres. de ce fichier j'ai extrait tous les codes postaux donc j'ai un liste de code postaux de 2299 lignes . voici un extrait ci-aprés (j'ai pris quelques lignes seulement ):
95640
95700
95800
95801
95870
95880
97057
97100
97102
97120
et maintenant je veux garder que les numeros des départements donc les deux premier chiffres. au début je l'ai fait avec "cut -b -2" mais il me donne que les deux premiers chiffres mais le probleme c'est que le département outre-mer se décompose de 3 chiffres et non de 2 , donc comment je fait pour extraire les numeros de département à partir des codes postaux des villes , en sachant que tous les départements se décomposent de deux chiffres apart le departement outre-mer qui se decompose de 3 chiffres. j'ai pensé à la boucle "if" mais je ne sais pas comment ecrire le programme. SVP, j'ai besoin de votre aide. et merci
A voir également:
- Extraction sous linux
- Linux reader - Télécharger - Stockage
- Toutou linux - Télécharger - Systèmes d'exploitation
- Backtrack linux - Télécharger - Sécurité
- R-linux - Télécharger - Sauvegarde
- Linux mint 22.1 - Accueil - Linux
2 réponses
Salut,
Une solution :
Une solution :
#! /bin/sh #set -xv for line in $(cat ton_fichier) do case "$line" in 97???|98???) echo "${line::3}" ;; *) echo "${line::2}" ;; esac done;-))
Salut,
Je ne peux pas tester, mais pourqoui pas une simple regex avec l'option -o ?!
Je ne peux pas tester, mais pourqoui pas une simple regex avec l'option -o ?!
grep -Eo '^(9[7|8][0-9]|[0-9][0-69])' fichier
Re,
Je ne comprends pas ton argument :-(
Voici ce que j'obtiens comme résultat (bref c'est le même)
Je ne comprends pas ton argument :-(
Voici ce que j'obtiens comme résultat (bref c'est le même)
lami20j@debian:~$ cat cp.txt 95640 95700 95800 95801 95870 95880 97057 97100 97102 97120 lami20j@debian:~$ sh cp.sh 95 95 95 95 95 95 970 971 971 971 lami20j@debian:~$ grep -Eo '^(9[7|8][0-9]|[0-9][0-69])' cp.txt 95 95 95 95 95 95 970 971 971 971 lami20j@debian:~$ grep -Eo '^(9[7|8][0-9]|[0-9][0-69])' cp.txt | wc -l 10 lami20j@debian:~$ sh cp.sh | wc -l 10
Ben mon argument il tient à ce que j'obtiens ;-(((
Si tu as une explication, je suis preneur ;-))
[tmpfs]$ cat toto 32000 93123 94256 94000 95640 95700 95800 95801 95870 95880 97057 97100 97102 97120 [tmpfs]$ grep -Eo '^(9[7|8][0-9]|[0-9][0-69])' toto 32 00 93 12 94 25 94 00 95 64 95 70 95 80 95 80 95 95 970 971 00 971 02 971 20 [tmpfs]$;-\
Si tu as une explication, je suis preneur ;-))
Salut,
La version de grep ?!!!
Regarde chez moi
La version de grep ?!!!
Regarde chez moi
lami20j@debian:~$ cat cp.txt 32000 93123 94256 94000 95640 95700 95800 95801 95870 95880 97057 97100 97102 97120 lami20j@debian:~$ grep -Eo '^(9[7|8][0-9]|[0-9][0-69])' cp.txt 32 93 94 94 95 95 95 95 95 95 970 971 971 971Voici la version de grep
lami20j@debian:~$ grep --version GNU grep 2.5.3 Copyright (C) 1988, 1992-2002, 2004, 2005 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.