[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: consiglio per script su file di testo



prova con questo:


#include <stdio.h>


void main (int argc, char **argv){
   int l,c=0;
   FILE *file_origine,*file_out;
   char bf[4096];
 
   if(argc!=2){
      fprintf(stderr,"Errore accetto un solo parametro\n");
      exit(1);
      }
   if((file_origine=fopen(argv[1],"r")) == NULL){
      fprintf(stderr,"Non esiste il file di origine %s\n",argv[1]);
      exit(2);
      }
   file_out=fopen("accoppiato.txt","w");
   while(fgets(bf,4095,file_origine) != NULL){
      l=strlen(bf);
      if(bf[l-1]=='\n')
         bf[l-1]='\0';
      if(c < 1){
         fprintf(file_out,"%s",bf);
         c++;
         }
      else{
         fprintf(file_out," %s\n",bf);
         c=0;
         }
      }
   if(c==1)
      fputc('\n',file_out);
   fclose(file_origine);
   fclose(file_out);
   exit(0);
}


poi compili e accetta come unico parametro il file di origine....




On Tue, May 15, 2001 at 04:21:08PM +0200, Sarlak wrote:
> Davide Alberani (alberanid@bigfoot.com) wrote:
>  
> > Prova con una regexp del tipo:
> >   s/\(.*\)\n\(.*\)/\1 \2/g
> 
> Non riesco a ottenere niente.
> Comunque per essere precisi il testo di riferimento e' composto in questo
> modo:
> 
> 3c5x9utils
> 1.3-6
> 3dchess
> 0.8.1-8
> 44bsd-rdist
> 20001111-4
> ...etc...
> 
> Io vorrei farlo diventare:
> 3c5x9utils	1.3-6
> 3dchess	0.8.1-8 
> ...etc...
> 
> Con questo mini script per awk:
> 
> #!/usr/bin/awk
> BEGIN { RS = "" ; FS = "\n" } {
>       print $1 "\t" $2
> }
> 
> riesco a fare il lavoro corretto ma solo per le prime due righe, poi si
> ferma perche' non riesco a dirgli come sono separati i record. Infatti il
> problema e' che nel mio file i campi e i record sono separati tra loro nella
> stessa maniera: con una \n.
> 
> Potrei aggirare il problema se sapessi come inserire un segno particolare o
> una riga vuota ogni due, ma anche qui non so da che parte girarmi (sed?)
> 
> Grazie.
> 
> Cordiali Saluti,
> Tiziano.
> 
> --
> 
> "La televisione è quell'apparecchio che·permette a persone 
> che non hanno niente·da fare, 
> di guardare gente che non sa fare niente" 
> 
> 
> --  
> To UNSUBSCRIBE, email to debian-italian-request@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
> 



Reply to: