petdog wrote:
awk "{ if (NR <= $TO) { if (NR > $FROM) print } else { exit } }" filediinputNon 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