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

Trouver un champ qui est entre parenthèses

6 réponses
Avatar
Kevin Denis
Bonjour,

j'ai plusieurs lignes d'enregistrements en texte.
Elles contiennent toutes (plus ou moins sur la fin) un code postal sur
deux chiffres entre parenthèses.
Ex:
expédition ce jour (joe) - imprimante - wifi (42) / ok
refus non motivé - (77)
etc..

Ma question est simple: comment extraire ces codes postaux?
J'ai essayé à coup de cut, mais il y a de nombreuses lignes qui contiennent
d'autres infos entre parenthèses avant ou après le code postal

Merci
--
Kevin

6 réponses

Avatar
Jean-Marc Bourguet
Kevin Denis writes:

Bonjour,

j'ai plusieurs lignes d'enregistrements en texte.
Elles contiennent toutes (plus ou moins sur la fin) un code postal sur
deux chiffres entre parenthèses.
Ex:
expédition ce jour (joe) - imprimante - wifi (42) / ok
refus non motivé - (77)
etc..

Ma question est simple: comment extraire ces codes postaux?
J'ai essayé à coup de cut, mais il y a de nombreuses lignes qui contiennent
d'autres infos entre parenthèses avant ou après le code postal



sed -e 's:.*(([0-9][0-9])).*:1:'

A+

--
Jean-Marc
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Avatar
Gugus
Ce cher Kevin Denis a posté :

Bonjour,

j'ai plusieurs lignes d'enregistrements en texte.
Elles contiennent toutes (plus ou moins sur la fin) un code postal sur
deux chiffres entre parenthèses.
Ex:
expédition ce jour (joe) - imprimante - wifi (42) / ok
refus non motivé - (77)
etc..

Ma question est simple: comment extraire ces codes postaux?
J'ai essayé à coup de cut, mais il y a de nombreuses lignes qui contiennent
d'autres infos entre parenthèses avant ou après le code postal



cut n’est pas fait pour ça.
Il faudrait plutôt se tourner vers sed, awk, ou perl par exemple.

Quant à l’implémentation à proprement parler, je vous invite à vous documenter :)

--
Gugus [http://what.dafuq.it/]
Avatar
Tanguy Ortolo
Kevin Denis, 2013-10-07 17:37+0200:
j'ai plusieurs lignes d'enregistrements en texte.
Elles contiennent toutes (plus ou moins sur la fin) un code postal sur
deux chiffres entre parenthèses.
Ex:
expédition ce jour (joe) - imprimante - wifi (42) / ok
refus non motivé - (77)



grep -Eo '([[:digit:]]{2})' | grep -Eo '[[:digit:]]{2}'

--
. o .
. . o Tanguy
o o o
Avatar
Kevin Denis
Le 07-10-2013, Tanguy Ortolo a écrit :
j'ai plusieurs lignes d'enregistrements en texte.
Elles contiennent toutes (plus ou moins sur la fin) un code postal sur
deux chiffres entre parenthèses.
Ex:
expédition ce jour (joe) - imprimante - wifi (42) / ok
refus non motivé - (77)



grep -Eo '([[:digit:]]{2})' | grep -Eo '[[:digit:]]{2}'



Je n'ai pas précisé, mais il peut y avoir d'autres chiffres sur la ligne:
echo "refus non motivé 424242 - (77) yapyapyap"
| grep -Eo '([[:digit:]]{2})' | grep -Eo '[[:digit:]]{2}'
42
42
42
77
mais je retiens l'idée.
--
Kevin
Avatar
Kevin Denis
Le 07-10-2013, Jean-Marc Bourguet a écrit :
sed -e 's:.*(([0-9][0-9])).*:1:'



Merci
--
Kevin
Avatar
Damien Wyart
> grep -Eo '([[:digit:]]{2})' | grep -Eo '[[:digit:]]{2}'



* Kevin Denis in fr.comp.os.unix:
Je n'ai pas précisé, mais il peut y avoir d'autres chiffres sur la ligne:
echo "refus non motivé 424242 - (77) yapyapyap"
| grep -Eo '([[:digit:]]{2})' | grep -Eo '[[:digit:]]{2}'
42
42
42
77



Je pense qu'il fallait échapper les parenthèses dans la première
expression régulière :

$ echo "refus non motive 424242 - (77) yapyapyap"
| grep -Eo '([[:digit:]]{2})' | grep -Eo '[[:digit:]]{2}'
77

--
DW