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

Re: alternativa ad head|tail?



petdog wrote:
awk "{ if (NR <= $TO) { if (NR > $FROM) print } else { exit } }" filediinput


Non funziona mica!!

Da me, si'... Hai sostituito le variabili o le hai impostate prima
di provare lo script? :P

Comunque per non leggere tutto il file basta dare una passata di gcc a questo:

#include <stdio.h>
int main(int argc, char *argv[])
{
	int start=atoi(argv[1]);
	int to=atoi(argv[2]);
	char *filename=argv[3];
	FILE *fp;
	fp=fopen(filename,"r");
	char data[8192];
	long unsigned int giro=0;
	while(fgets(data,8192,fp))
	{
		if(giro >= start) break;
		else giro++;
	}
	while(fgets(data,8192,fp))
	{
		if(giro < to)
		{
			printf("%s",data);
			giro++;
		}
		else break;
	}
	fclose(fp);
return 0;
}

Pero' cosi' il programma perde il conto se ci sono
righe piu' lunghe di 8192 byte (cosa rara, ma possibile).
Inoltre non credo si comporti bene nel caso di file
binari (anche se era quasi sottinteso trattassimo
file di testo).
Altra cosa buona che potresti fare per esercizio
e' parametrizzare il buffer e rendere opzionale
il terzo argomento (un po' tipo il comando cat)
a parte tutti i controlli sull'input, ovviamente.
Come chiamerai la tua creazione? ;)


Cristian



Reply to: