Re: Filtrar comodins/regex de les línies

Eloi <[email protected]>
Newsgroups gmane.linux.debian.user.catalan
Message-ID <[email protected]>
(disculpes, he enviat abans d'hora)

El 17/1/24 a les 22:10, Eloi ha escrit:
> El 17/1/24 a les 16:10, julio ha escrit:
>>
>> El 17 de gener de 2024 8:39:26 CET, Narcis Garcia 
>> <[email protected]> ha escrit:
>>> Bones,
>>>
>>> Tinc un fitxer de text, com podria ser per exemple una llista de 
>>> números de telèfon (coneguts.txt):
>>> 972123456
>>> 972111133
>>> 972111134
>>> 972111135
>>> 972111136
>>> 972789012
>>> però m'agradaria representar-hi rangs compatibles (expressions 
>>> regulars) per abreviar:
>>> 972123456
>>> 9721111..
>>> 972789012
>> Com no estem acotant amb ^  ni amb $
>>
>>
>> 9
>> 7
>> 2
>> .
>> etcètera
>> 97
>> 72
>> 21
>> 9.
>> .9
>> etc
>> 972
>> 97.
>> 9.2
>>
>> I això sense fent servir només dígits i el caràcter . no literal.
>>
>> Sembla un problema matemàtic de combinatòria :)
>>
>> O probablement no ho he entès.
>>
>> Vagi bé.
>>
> Suposant que el que es cerca són números de N dígits i que els patrons 
> de cerca son igualment de N caràcters i no fan servir repeticions (o 
> sigui, que troben o bé un caràcter específic o bé qualsevol), 
> existeixen 2^N patrons que coincideixen amb un número de N dígits. Amb 
> N=9 són 512 patrons compatibles.
>
> Si a més del . (qualsevol dígit) vols també poder indicar rangs de 
> dígits [0-9], per a cada posició tens 10 rangs possibles, incloent el 
> [0-9] equivalent al . i el [d-d] equivalent al dígit específic (en 
> general, tindries el rang [k-d] (o [d-k] si k>d) per k=0..9 i d 
> fixat). En aquest cas, són 10^N els possibles patrons que pot complir 
> un nombre de N dígits, que ja són 100 milions per N=9.
>
> Si acceptes patrons amb un subconjunt arbitrari de dígits per a cada 
> posició (posem per cas, els senars), crec que tindries sum(k=1..10, 
> 10!/((10-k)!·k!)) (tinc la combinatòria molt rovellada), que és una 
> burrada que després encara s'haurà d'elevar a la novena potència.
>
> De tots aquests possibles patrons, quin seria el que esperaries com a 
> resultat correcte?
>
Per contra, si el que t'interessa saber és, a partir d'una llista 
predefinida de patrons, quin(s) d'ells trobarien un valor específic, 
podries fer-ho en un bucle:

{ while read -n PATTERN; do echo $1 | grep -q "^${PATTERN}$" && echo 
"$PATTERN"; done; } < coneguts.txt

Tingues present que, a priori, no tens cap garantia d'unicitat.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.