Aquesta proposta d'en Joan funciona:
Coneguts="34930000000
3.930000000
.4930000000
44930000000
4.930000000"
echo "$Coneguts" > coneguts.txt
CercantInici="34"
PatroCerca="^$(echo "$CercantInici" | sed -ne 's/\([0-9]\)/[\.\1]/gp')"
echo "$PatroCerca"
grep -E "$PatroCerca" coneguts.txt
GRÀCIES!
El 17/1/24 a les 17:53, Joan Montané ha escrit:
Missatge de Narcis Garcia <[email protected]
<mailto:[email protected]>> del dia dc., 17 de gen. 2024 a les 8:39:
Bones,
Algú sap com fer-ho?
Si he entès bé el problema, la cosa seria així:
cat coneguts.txt | grep -E "^[\.3][\.4]"
El que faig és (manualment) canviar cada caràcter del prefix (per
exemple, 3) que vols buscar per la parella formada pel mateix caràcter i
un punt normal (en l'exemple [\.3]). La resta és senzill, cercar en el
fitxer amb dades per l'expressió regular de línies que comencin per
l'expressió regular.
Una millora seria fer la conversió "34" a "[\.3][\.4]" de forma automàtica.
Un primer intent pot ser amb 'sed', per exemple:
echo 34 | sed -ne 's/\([0-9]\)/[\.\1]/gp
retorna:
[.3][.4]
que podem usar en l'ordre inicial proposada.
Ajuntant les dues coses...
PREFIX=`echo 34 | sed -ne 's/\([0-9]\)/[\.\1]/gp'`
cat coneguts.txt | grep -E "^$PREFIX"
sembla que hauria de rutllar.
En una única línia...
PREFIX=`echo 44 | sed -ne 's/\([0-9]\)/[\.\1]/gp'` && cat coneguts.txt |
grep -E "^$PREFIX"
Sí, uso una variable d'entorn per a guardar el prefix en la forma
[\.3][\.4]. Si algú sap com enviar aquesta cadena al grep d'una forma
més elegant, que ho digui, sisplau.
És això el que volies?
Salut!
Joan Montané
--
Narcis Garcia
__________
I'm using this dedicated address because personal addresses aren't
masked enough at this mail public archive. Public archive administrator
should remove and omit any @, dot and mailto combinations against
automated addresses collectors.
--
Narcis Garcia