Missatge de Narcis Garcia <debianlists@actiu.net
<mailto:debianlists@actiu.net>> 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é