Re: escludere linee in base alla data
MaX wrote: ciao a tutti, stavo cercando la miglior soluzione per eliminare da un file csv, le linee la cui data e ora, indicata in un determinato campo è inferiore ad un determinato valore. il file è simile a questo: 123,456,789,,bbb,,2008-06-23 15:15,dd,000,123123 123,456,789,,bbb,,2009-01-01 00:00,dd,000,123123 123,456,789,,bbb,,2008-06-24 12:10,dd,000,123123 vorrei tagliare via le linee che hanno la data inferiore al 2009-01-01 00:00, e ovviamente non è in ordine di data. awk -F\,\ '{if ($7 2009-01-01 00:00) print}' prova.csv ciao -- np: no song -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/87y4lbg8bp@id-313311.news.uni-berlin.de
escludere linee in base alla data
ciao a tutti, stavo cercando la miglior soluzione per eliminare da un file csv, le linee la cui data e ora, indicata in un determinato campo è inferiore ad un determinato valore. il file è simile a questo: 123,456,789,,bbb,,2008-06-23 15:15,dd,000,123123 123,456,789,,bbb,,2009-01-01 00:00,dd,000,123123 123,456,789,,bbb,,2008-06-24 12:10,dd,000,123123 vorrei tagliare via le linee che hanno la data inferiore al 2009-01-01 00:00, e ovviamente non è in ordine di data. Stavo pensando che si potrebbe riordinare le linee per data, individuare a che linea comincia il 2009-01-01 00:00 e tagliare quelle precedenti. Oppure potrei inserire tutto in un db e con quello risolverei tutti i problemi ma magari c'è qualche asso nella manica con sed o awk... per esempio potrei creare una espressione regolare tipo grep -v \([0-9]*\)-\([0-9]*\)-\([0-9]*\) \([0-9]*\):\([0-9]*\) file.csv ...ma ovviamente con questo selezionerei tutte le date e quindi eliminerei tutte le linee. Come fare a dire ad una espressione regolare che un numero, deve essere inferiore o superiore ad un determianto valore? idee? ciao, MaX -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/caeyavmuags22nkgpdasrnhmr9zz79w0dvf+-kz7dlktubua...@mail.gmail.com
Re: escludere linee in base alla data
Grazie ma dimenticavo di dire che la data di taglio, non èil primo dell'anno del 2009, ma qualche cosa tipo: 2009-01-26 18:36 ...non capisco il passaggio substr($7,2,4 cmq sapevo che awk poteva farlo :D ciao MaX Il 28/04/15, Scrapsc...@inventati.org ha scritto: Prova a vedere così: awk -F , '{ if (substr($7,2,4) = 2009) print $0 }' file.csv in questo modo dovrebbe stamparti solo le righe con l'anno maggiore o uguale a 2009 Il 2015-04-28 14:57 MaX ha scritto: ciao a tutti, stavo cercando la miglior soluzione per eliminare da un file csv, le linee la cui data e ora, indicata in un determinato campo è inferiore ad un determinato valore. il file è simile a questo: 123,456,789,,bbb,,2008-06-23 15:15,dd,000,123123 123,456,789,,bbb,,2009-01-01 00:00,dd,000,123123 123,456,789,,bbb,,2008-06-24 12:10,dd,000,123123 vorrei tagliare via le linee che hanno la data inferiore al 2009-01-01 00:00, e ovviamente non è in ordine di data. Stavo pensando che si potrebbe riordinare le linee per data, individuare a che linea comincia il 2009-01-01 00:00 e tagliare quelle precedenti. Oppure potrei inserire tutto in un db e con quello risolverei tutti i problemi ma magari c'è qualche asso nella manica con sed o awk... per esempio potrei creare una espressione regolare tipo grep -v \([0-9]*\)-\([0-9]*\)-\([0-9]*\) \([0-9]*\):\([0-9]*\) file.csv ...ma ovviamente con questo selezionerei tutte le date e quindi eliminerei tutte le linee. Come fare a dire ad una espressione regolare che un numero, deve essere inferiore o superiore ad un determianto valore? idee? ciao, MaX -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/13ffc6a75b3814263becdea1cfed1...@inventati.org -- ciao, MaX -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/caeyavmv53dpviwyong2vmvy0vm_f8vm541db3cl5lgjecvf...@mail.gmail.com
Re: escludere linee in base alla data
substr($7,2,4)--- restituisce i primi 4 caratteri, a partire dal 2°, del 7° campo... se la data non è il 1° gennaio d'istinto lo fare uno script python, o altro linguaggio in grado di confrontare direttamente due date, però allora forse tanto vale caricarlo in un db come dicevi... Scrap On 04/28/2015 06:05 PM, MaX wrote: Grazie ma dimenticavo di dire che la data di taglio, non èil primo dell'anno del 2009, ma qualche cosa tipo: 2009-01-26 18:36 ...non capisco il passaggio substr($7,2,4 cmq sapevo che awk poteva farlo :D ciao MaX Il 28/04/15, Scrapsc...@inventati.org ha scritto: Prova a vedere così: awk -F , '{ if (substr($7,2,4) = 2009) print $0 }' file.csv in questo modo dovrebbe stamparti solo le righe con l'anno maggiore o uguale a 2009 Il 2015-04-28 14:57 MaX ha scritto: ciao a tutti, stavo cercando la miglior soluzione per eliminare da un file csv, le linee la cui data e ora, indicata in un determinato campo è inferiore ad un determinato valore. il file è simile a questo: 123,456,789,,bbb,,2008-06-23 15:15,dd,000,123123 123,456,789,,bbb,,2009-01-01 00:00,dd,000,123123 123,456,789,,bbb,,2008-06-24 12:10,dd,000,123123 vorrei tagliare via le linee che hanno la data inferiore al 2009-01-01 00:00, e ovviamente non è in ordine di data. Stavo pensando che si potrebbe riordinare le linee per data, individuare a che linea comincia il 2009-01-01 00:00 e tagliare quelle precedenti. Oppure potrei inserire tutto in un db e con quello risolverei tutti i problemi ma magari c'è qualche asso nella manica con sed o awk... per esempio potrei creare una espressione regolare tipo grep -v \([0-9]*\)-\([0-9]*\)-\([0-9]*\) \([0-9]*\):\([0-9]*\) file.csv ...ma ovviamente con questo selezionerei tutte le date e quindi eliminerei tutte le linee. Come fare a dire ad una espressione regolare che un numero, deve essere inferiore o superiore ad un determianto valore? idee? ciao, MaX -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/13ffc6a75b3814263becdea1cfed1...@inventati.org -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/553fb992.7020...@inventati.org
Re: escludere linee in base alla data
Prova a vedere così: awk -F , '{ if (substr($7,2,4) = 2009) print $0 }' file.csv in questo modo dovrebbe stamparti solo le righe con l'anno maggiore o uguale a 2009 Il 2015-04-28 14:57 MaX ha scritto: ciao a tutti, stavo cercando la miglior soluzione per eliminare da un file csv, le linee la cui data e ora, indicata in un determinato campo è inferiore ad un determinato valore. il file è simile a questo: 123,456,789,,bbb,,2008-06-23 15:15,dd,000,123123 123,456,789,,bbb,,2009-01-01 00:00,dd,000,123123 123,456,789,,bbb,,2008-06-24 12:10,dd,000,123123 vorrei tagliare via le linee che hanno la data inferiore al 2009-01-01 00:00, e ovviamente non è in ordine di data. Stavo pensando che si potrebbe riordinare le linee per data, individuare a che linea comincia il 2009-01-01 00:00 e tagliare quelle precedenti. Oppure potrei inserire tutto in un db e con quello risolverei tutti i problemi ma magari c'è qualche asso nella manica con sed o awk... per esempio potrei creare una espressione regolare tipo grep -v \([0-9]*\)-\([0-9]*\)-\([0-9]*\) \([0-9]*\):\([0-9]*\) file.csv ...ma ovviamente con questo selezionerei tutte le date e quindi eliminerei tutte le linee. Come fare a dire ad una espressione regolare che un numero, deve essere inferiore o superiore ad un determianto valore? idee? ciao, MaX -- Per REVOCARE l'iscrizione alla lista, inviare un email a debian-italian-requ...@lists.debian.org con oggetto unsubscribe. Per problemi inviare un email in INGLESE a listmas...@lists.debian.org To UNSUBSCRIBE, email to debian-italian-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/13ffc6a75b3814263becdea1cfed1...@inventati.org