[Unix] char chain

nono -  
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité -
Hi all,

Je viens de passer ma nuit à chercher comment gérer les chaines de caractères en bash, ça commence à me sortir par les yeux, je m'adresse donc à vous ;)

disons que j'ai :
t="001.023.103.120"

Là dedans, je veux faire quelque chose qui va me supprimer les 0 inutile dans cette ip.

Au final je veux avoir :
t="1.23.103.120"

Je pourrais le faire à la main c'est vrai, sauf que le fichier fait quelques 45 Mo donc bon ^^
J'ai essayé awk sans grande réussite je l'avoue.

Voilà merci pr l'aide ;)
A voir également:

10 réponses

lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
Salut,

essaie avec
perl -pi.orig -e 's/(t=\")0+(\..*)/$1$2/' fichier 
0
nono
 
arnaud@unix-powa:~/Desktop$ perl -pi.orig -e 's/(t=\")0+(\..*)/$1$2/' a
arnaud@unix-powa:~/Desktop$ cat a
000.000.000.000
003.255.255.255
004.000.025.146

nothing ^-_-^
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
C'est normal, tu as dit

disons que j'ai :
t="001.023.103.120"


par exemple il faut supprimer tout si on a 000.000.000.000 ?
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
on peut avoir par exemple
000.000.000.111
000.000.111....

?

donc il faut traiter plusieurs cas?

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nono
 
en fait, j'me suis décidé à le coder en C, et d'un coup ça va plus vite ..
bon c fait en 5min hein ^-_-^
merci qd même pr l'aide


#include <stdio.h>

int main(void)
{
char filename[10];
int n,readend;
FILE * input;
printf("nom du file : ");
scanf("%9s",filename);
input=fopen(filename,"r");
int i=1,j=2;
do
{
readend=fscanf(input,"%d",&n);
if (readend==1)
{
if (i==4)
{
if (j!=2)
{
printf("%d\n",n);
j++;
} else {
printf("%d-",n);
j=1;
}
i=0;
} else {
printf("%d.",n);
}
}
i++;
}
while (readend==1 && fgetc(input)!=EOF);
fclose(input);
}
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
Très bien :-))
Il fait combien de lignes ton fichier de 45 Mo?
0
nono
 
à peut près 1 millions
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
veux tu compresser ton fichier et le mettre sur cjoint.com?
Merci.
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
j'me suis décidé à le coder en C, et d'un coup ça va plus vite .

je voulais voir ton fichier puisque 5 minutes me semble beaucoup
ici fichiers texte en perl#2007 02 19%2020%3A15%3A18 je traite 2 fichiers (chaque de 2 millions lignes) en 13 secondes
0
nono
 
salut,

désolé je viens de voir ton post
je disais "5min" pour coder le script lol, pas pour le traiter ;)

au niveau du fichier, ce sont des bad ip provenant de http://www.bluetack.info/nipfilter.dat.gz ainsi qu'une liste de bad sites (j'ai plus le site en tête là), une liste d'ip locales, etc ..
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
Ah, d'accord.
Je préfère quand même les regex quand il s'agit de traitement de chaînes de caractères :-))

bonne continuation
0