[Unix] char chain
nono
-
lami20j Messages postés 21506 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
lami20j Messages postés 21506 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
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 ;)
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 ;)
10 réponses
-
Salut,
essaie avecperl -pi.orig -e 's/(t=\")0+(\..*)/$1$2/' fichier
-
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 ^-_-^ -
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 ?
-
on peut avoir par exemple
000.000.000.111
000.000.111....
?
donc il faut traiter plusieurs cas?
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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);
} -
Très bien :-))
Il fait combien de lignes ton fichier de 45 Mo? -
-
veux tu compresser ton fichier et le mettre sur cjoint.com?
Merci. -
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 -
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 ..