Newsgroup: it.comp.os.linux.iniziare
Titolo: Programmazione BASH

Ciao a tutti, ho incontrato un grosso ostacolo nello sviluppare un 
breve programma per la shell bash, chiedo cortesemente un aiuto.
Ammetto che ho preso paura non appena ho cominciato a scorrerne il 
manuale, e siccome mi serviro' solo una volta di quello di cui ho 
bisogno, mi rimetto alla vostra bonta' e chiedo se qualcuno puo' 
gentilmente scrivermi le poche righe di codice che facciano cio' che 
mi serve.
Premetto che questo e' destinato ad un sito web non profit, senza 
pubblicita', della gerarchia .org.
Ho un lunghissimo file di testo diviso in capitoli, all'inizio di 
ogniuno dei quali compaiono alcuni asterischi. Da questo file vorrei 
creare tanti altri file quanti sono i capitoli: questi file 
dovrebbero prendere come modello un semplice file HTML gia' pronto, 
inserire il capitolo al posto della stringa (CAPITOLO) e scrivere il 
numero del capitolo al posto della stringa (NUMERO). I nomi dei file 
dovrebbero essere (CAPITOLO).html - es. 001.html 002.html ecc...
Scusate se la mia richiesta dovesse essere fuori luogo.
Cordiali saluti
enos
lifeislife (a) 
tin.it

 dovrebbero essere (CAPITOLO).html - es. 001.html 002.html ecc...
Questo lo fai spezzando il file HTML precotto in due, la parte al di
sopra della parola ``CAPITOLO'' (superiore.html) e la parte al di
sotto (inferiore.html).  Creare un capitolo diventa:
$ cat superiore.html capitolo.001 inferiore.html >cap001.html
E farlo per 10 capitoli diventa:
$ for n in `seq -w 10`; do cat superiore.html capitolo.0$n inferiore.html >cap0$n.html; done
Buon lavoro.
-- 
Tip | La shell č ben piů di una interfaccia, puoi usarla per scrivere veri e
of  | propri programmi:
the | 
http://ildp.pluto.linux.it/HOWTO/Bash-Prog-Intro-HOWTO.html
day | 
http://digilander.libero.it/salsi/bozze2/bash.html
0014| 
http://digilander.libero.it/bash/

 dai progetti dell'automobile [...]
Mi avevi capito al volo :-) questa e' stata la scena:
$ man bash
(lettura 10 secondi circa)
(Page Down)(Page Down)
(lettura 5 secondi circa)
(Pag Down)
q :-)))
L'how-to che mi proponi e' invece abbordabile anche per un LULONE come 
me, ma come mi facevi notare, ci vuole pure awk.
A tal proposito, non riesco proprio ad adattare l'espressione che hai 
scritto al mio caso. Ho provato per ore e ore senza riuscirci. Hai 
gia' fatto molto, ma puoi aiutarmi ancora una volta per piacere?
I titoli dei capitoli sono scritti cosi':
numero_capitolo. CAPITOLO (1/numero_capitolo)
* * * * * * * * * * * * *
testo del capitolo
esempio dal primo libro
1. CAPITOLO (1/1)
* * * * * * * * * * * * *
bla bla bla bla
.... 
242. CAPITOLO (1/242)
* * * * * * * * * * * * *
bla bla bla bla
Questo e' quello che ho concepito partendo dal tuo suggerimento, ma 
funzionano solo piccoli pezzi (la parentesi non la vede):
$ cat GEG1.txt | awk 'BEGIN { RS = "\n[0-9]+. CAPITOLO 
(GEG1/[0-9]+)\n\* \* \* \* \* \* \* \* \* \* \* \* \*\n"; n = 0 }
{ if (length($0) > 0) print $0 > sprintf("capitolo.%.3d", n++); }'
Inoltre sugli stessi file sto cercando di usare sed per sostituire del 
testo (es. /i con <i>) ma anche qui non riesco a proteggere i 
caratteri, e il file non viene nemmeno salvato. Sono vicino vicino a 
un esaurimento nervoso :-)))
Non serve che mi ringrazi perche' ti aiuto a rinfrescarti la memoria, 
eh :-) Scherzo, ti devo gia' moltissimo. Mi hai risparmiato in un 
attimo decine di ore di noioso copia-incolla.
Cari saluti
enos
lifei...@tin.it

 attimo decine di ore di noioso copia-incolla.
Bene, allora come ricompensa adatta il tip su sed ad una signature
(linee guida su 
http://practicaltux.sf.net
), così la aggiungo alle
icoli-tips.  (Se ti va, neh. :-))
Ti consiglio di dare un'occhiata a questo breve tutorial in italiano
sulle espressioni regolari.
 
http://www.linuxfocus.org/Italiano/July1998/article53.html
Fortunatamente, in Unix si preferiscono semplici file di testo,
talvolta con markup semplice o addirittura implicito, (come *questo*
per il neretto), a formati binari o con pesante markup esplicito
(xml), quindi le espressioni regolari sono uno strumento che vale la
pena saper maneggiare.
-- 
Tip | Un buon punto di partenza per Debian:
of  | 
http://www.debian.org/doc/manuals/quick-reference/quick-reference.it.html
the | 
day | Tutto (ma proprio *tutto*) su Debian, e non solo:
0026| 
http://www.debian.org/doc/manuals/debian-reference/reference.it.html

 (Se ti va, neh. :-))
Onorato :-) io ci provo...
Tip | Per sostituire una stringa (o una espressione regolare) con un'altra:
of  | 
the | $ echo 'Buona Sera' | sed 's/Sera/Serata/g'          # flusso di dati
day | $ sed 's/Sera/Serata/g' vecchio_file > nuovo_file    # in un file (1)
0029| $ sed 's/\(sera\)/\1ta/g' vecchio_file > nuovo_file  # in un file (2)
Hai riacceso la fiamma del mio amore per Linux, che era ormai quasi spenta. A 
parte sapere come fare certe cose in modo efficente, e' bello vedere che ci 
sono in giro persone cosi' competenti e disponibili. Forza Linux! :-)
Con Amicizia
enos
lifeislife (chioccia) 
tin.it

 sono in giro persone cosi' competenti e disponibili. Forza Linux! :-)
:-)
-- 
Tip | Per ottenere un file PostScript (estensione .ps) da qualunque programma,
of  | seleziona l'opzione `Stampa su file'.
the | 
day | I file PostScript possono essere reimpaginati, convertiti in PDF...
0002|