Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    262

    giocare con file di testo

    ciao,
    uso ubuntu 8.10 live.
    Questo è il mio problema: ho una serie di files testuali in una cartella, vorrei scrivere un comando che legge ogni file (tipo ls), cancella la prima e l'ultima riga (non saprei) e copia il rimanente in un nuovo file.
    Pertanto l'obiettivo è avere un unico file composto dalla concatenazione di tutti i files privati di tutte le prime ed ultime righe.
    Avete qualche dritta da darmi?
    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,526
    Per eliminare la prima riga di un file

    awk 'NR != 1' miofile

    per eliminare l'ultima riga di un file supponendo che il file abbia 3 righe

    head -n 2 miofile

    ti fai un ciclo for e redirezioni il risultato su un unico file

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    262
    i files non hanno tutti la stessa dimensione ed inoltre ogni file ha migliaia di righe.
    Inoltre una volta eliminate la prima e l'ultima devo unirli in un unico file

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,526
    beh usi nl per determinare il numero di righe, e da li sai quante ne devi togliere con head.

  5. #5
    a con un ciclo for, per ogni output dei vari file modificati li metti in un file temporaneo redirigendo l'output con >>.

    Magari leggi qui

    http://www.pluto.it/files/ildp/guide/abs/index.html
    "L'utopia è come l'orizzonte: cammino due passi, e si allontana di due passi. Cammino di dieci passi, e si allontana di dieci passi. E allora, a cosa serve l'utopia? A questo: serve per continuare a camminare."
    Eduardo Galeano
    Il mio sito
    "if you want people to RTFM, make a better FM!"

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    262
    ok, grazie.
    Mi sto sbattendo un pò che non sono molto pratico come si evince

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    262
    non riesco a fare una cazzatina:

    mi serve sapere quante righe ha un file pertanto se scrivo:

    ubuntu@ubuntu:~/AN$ wc -l AN_MTFS_MEDIASET_090414_*.dat
    360 AN_MTFS_MEDIASET_090414_0000005056.dat
    ubuntu@ubuntu:~/AN$

    ottengo il risultato, ossia 360 + nome del file

    ora dovrei inizializzare una variabile a 360
    come cavolo faccio?

    Grazie

  8. #8
    Utente di HTML.it L'avatar di toraz
    Registrato dal
    Nov 2001
    Messaggi
    263
    codice:
    for file in `ls la_directory_dove_stanno_i_file/*`; do
      head -n-1 $file | tail -n-1 >> nuovo_file
    done
    Una cose del genere...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.