Newsgroup: it.comp.os.linux.iniziare
Titolo: Eliminare righe

Salve a tutti,
ho un file di testo di grande dimensione 100 MB
il file è un testuale
il contenuto del file è così:
pippo pluto prova
-----------------
prova pluto pippo
-----------------
ecc ecc.
Io vorrei fare in modo di togliere le righe che hanno i trattini
ottenendo quindi un file così:
pippo pluto prova
prova pluto pippo
C'è qualche modo utilizzando solamente dei comandi bash
e gli operatori di reindirizzamento "<" e ">"?
Oppure se conoscete altri modi.
Grazie
Ciao Max
-- 
+-----------------------------------------------------------+
| Secondo alcuni autorevoli testi di tecnica Aeronautica,   |
| il calabrone non può volare, a causa della forma e del    |
| peso del proprio corpo in rapporto alla superficie alare. |
| Ma il calabrone non lo sa e perciò continua a volare.     |
|					     Igor Sikorsky  |
+-----------------------------------------------------------+

 ottenendo quindi un file così:
grep -v -E "^-+$" nomefile > nomefile.new
non sono del tutto sicuro se grep voglia -+ o -\+.
man grep per maggiori info
Davide
-- 
| You know the sort of thing, they ask you if you've implemented shadow 
| passwords but don't know their /dev/arse from their /etc/elbow.
| --Chris King  

Oppure se conoscete altri modi.
Non sono un grande conoscitore della bash ma di sicuro il
modo c'è anche se io risolverei con un programmino di poche
righe in c (o c++)
Secondo me se non conosci questi linguaggi è una buona
occasione per impararli.... Considera che è un operazione
molto semplice da ottenere...
-- 
Filippo Santovito

 ottenendo quindi un file così:
Lo fai in una infinità di modi: sed, perl, grep, awk,...
I più semplici:
grep -v '\-\-\-' file-tratteggiato > file-pulito
sed '/---/d' file-tratteggiato > file-pulito
....
ciao, andrea
NB. in grep ho dovuto mettere uno \ davanti ad ogni -,
altrimenti veniva preso come l'inizio di una opzione ;-)

Vi ringrazio tutti per i suggerimenti che mi avete
dato, ho risolto modificando il comando che mi ha postato
Davide Bianchi, che ho opportunamente modificato in base alle
mi esigenze dopo essermi letto il man della grep :)
Riguardo alla soluzione proposta da Filippo Santovito
(un grazie anche a te :)), si, potevo farmi un programmino
in C ma volevo spremere la bash, so che è molto potente
ma non l'ho mai tirata più di tanto, mi sembrava l'occasione
e ho voluto sperimentare, ed i risultati sono stai ottimi, ma
sarebbero stati eccellenti se avevo in dotazione un processore
più potente di un pentium 166 :)
Per non dimenticare nessuno un ringraziamento anche ad Andrea C.
per il suo contributo :)


 ha scritto:

Imparare il C non e' una cattiva idea, ma per questo
tipo di applicazioni non e' certo la scelta piu' adatta.
Molto meglio se ti impari un linguaggio di scripting:
e' molto piu' semplice che imparare il C e ti risparmi
tutti i grattacapi della compilazione.
Per esempio, puoi risolvere il tuo problema con questo
programmetto in Python:
$ cat strip.py
import sys
in_file=file(sys.argv[1])
out_file=file(sys.argv[2],"w")
for line in in_file:
  if not line.startswith("-----"): # copia tutto tranne le righe che iniziano
con -----
      print >> out_file,line,
Da usare cosi': python strip.py inputfile.txt outputfile.txt
In questo caso, siccome hai un file da 100Mb, mi aspetto che
grep sia piu' rapido del Python e fai bene ad usarlo. Se
pero' devi fare qualcosa di piu' sofisticato e non hai
vincoli stretti di performance (I/O performance in questo
caso) e' molto piu' semplice programmare in Python che in
bash. Infatti io adesso praticamente non uso piu' il bash.
   Michele
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 
non si scrive un programma per ri-fare quello che esiste gia' 
e funziona bene (sed, grep ..)
-- 
       marco.atzeri at 
fastwebnet.it
La prima delle Frequently Asked Questions: 
dove sono le FAQ ?      it.faq