Newsgroup: it.comp.os.linux.software
Titolo: sed

 insisto
fine 
vorrei sostiture le indentazioni "> " a inizio riga con degli spazi, *ma*
mantenendo l'indentazione:
inizialmente pensavo a una cosa come
$ sed '/^> \?/s/> ?/    /'
che però funziona "una volta sola".
È possibile dire a sed "se hai effettuato la sostituzione, ri-analizza la
riga corrente"?
-- 
By ZeD

 riga corrente"?
  Sicuramente ho capito male la tua domanda... a me una cosa come
sed s/\>//g
  o se vuoi lo spazio
sed s/\>\ /\ /g
  funziona senza problemi, la 'g' serve proprio a quello. E' questo che
volevi? Mi sa di no... :-o
  Saluti,
-- 
Gianfranco Bertozzi
Linux User #183585

 mantenendo l'indentazione:
Puoi anche impostare lo spazio come carattere di citazione
ma non è una cosa molto intelligente; come faresti poi a 
distinguere una citazione da un testo indentato?
A proposito: la cosa che vuoi fare tu è al limite delle 
capacità di sed

 volevi? Mi sa di no... :-o
  C'ho pensato. A te serve togliere gli ">" inziali, un eventuale
'messaggio con > dentro' deve rimanere intatto. Mi pareva strano. :-)
  Un saluto,


 mantenendo l'indentazione:
Io lo farei con awk, col quale è piuttosto banale:
#!/usr/bin/awk -f
{
str="";
for (i=1; substr($0,i,1)==">"; i++) str=str " ";
print str substr($0,i);
}
dai in pasto a questo script (chmod u+x almeno) il file da elaborare, o in
pipe o come argomento(*), et voilà.
(*) cioè cat file.txt | script.awk
op. script.awk file.txt
a scelta, secondo le esigenze del caso.
-- 
Massimo Bacilieri AKA Crononauta

 volevi? Mi sa di no... :-o
no, perché ho la necessità di sostituire solo i caratteri iniziali
se ho un ">" in mezzo alla riga, non voglio cancellarlo
-- 
By ZeD

 capacità di sed
Penso, purtroppo, di si.
Ho visto i comandi H,h,G e g, ma non ho ben capito come applicarli al mio
caso; ecco perché chiedevo lumi qui.
-- 
By ZeD

 }
l'idea sembra buona, ma è un po' fragile (che succede se devo lavorare su
una cosa come "> > citazione", con lo spazio tra i 2 '>'?).
Grazie, comunque.
-- 
By ZeD


In tal caso basta considerare lo spazio alla stregua di un altro > e far
continuare il flusso:
...
for (i=1; substr($0,i,1)==">" || substr($0,i,1)==" "; i++) str=str " ";
...
Dal punto di vista puristico di programmazione è orribile perché spreca solo
cicli a sostituire spazi con spazi, ma dovrebbe raggiungere lo scopo :-)


 caso; ecco perché chiedevo lumi qui.
In teoria dovresti fare queste operazioni:
 - individuare una riga iniziante per ">"
 - copiare il pattern space nell'hold space
 - cancellare la parte iniziale contenente solo ">" e spazi
 - scambiare pattern space ed hold space
 - cancellare la parte finale che contiene altri caratteri oltre 
   ">" e  gli spazi
 - sostituire ">"
 - unire pattern space ed hold space
Però, oltre a non aver tempo per sviluppare questo script,
trovo che la soluzione già proposta con awk sia meglio.

 mantenendo l'indentazione:
#! /bin/sed -f
/^[ >]\+/ {
  h
  s/^[ >]\+//
  x
  s/^\([ >]\+\).*/\1/
  s/>/ /g
  G
  s/\n//g
}
Però penso che invece di usare tecniche particolarmente 
avanzate con sed sia meglio usare awk.
Per la verità penso che sed vada usato solo per cose 
abbastanza semplici ed usare awk negli altri casi.
 

   s/\n//g
  Bella. Sembra un quadro moderno. Saresti cosi' gentile da spiegarmela,
cosi' magari ci imparo qualcosa? :-)
  Io ero riuscito a isolare le due parti con un:
sed 's/\([\>\ ]*\)\(.*\)/\ \1/'   (i segni '>' iniziali)
sed 's/\([\>\ ]*\)\(.*\)/\ \2/'   (il resto della linea)
  ma oltre non ero riuscito ad andare. Vedo qualcosa di simile in quel
che hai fatto tu ma proprio non ci arrivo. :-/


   Saresti cosi' gentile da spiegarmela, cosi' magari ci imparo qualcosa? 
Certo. Ho già spiegato questo codice nel mio post precedente .
4a002cd3$0$1113$
4faf...@reader4.news.tin.it

   Saresti cosi' gentile da spiegarmela, cosi' magari ci imparo qualcosa? 
Certo. Ho già spiegato questo codice nel mio post precedente .
news:4a002cd3$0$1113$
4faf...@reader4.news.tin.it

 matematici al posto delle parole.
Neanche di strani insiemi di caratteri come "AFAIK", se vogliamo essere 
pignoli...
-- 
Vide

 pignoli...
Zitto e setta UTF8 


Se il mio KNode non salta automaticamente a UTF-8 non so se sia un /bug/ o 
una /feature/.
http://www.ietf.org/rfc/rfc2045.txt
Anche se la RFC di NNTP dice che tutto deve essere UTF-8, anche se credo si 
riferisca ai comandi NNTP, non al contenuto.
-- 
Vide

 Certo. Ho giÃ  spiegato questo codice nel mio post precedente .
  Scusami. Non l'avevo notato. Grazie. Ora cerchero' di capirci
qualcosa. Mi consolo, sembri aver seguito una strada simile a quella che
avevo immaginato io. Vuol dire che non sono ancora indementito. Forse.
  Un saluto e ancora grazie,


 configurazione di postfix?
Uh? Cos'hanno i file di configurazione di postfix di tanto ostico?
Enrico

 Zitto e setta UTF8 
Personalmente ho impostato il mio newsreader[1] in modo che utilizza
in lettura il UTF-8 come set di caratteri predefinito, ma continuo a
vedere le accentate presenti nel tuo messaggio tradotte ad minchiam.
Dici che a questo punto e` un problema del mio newsreader[1] oppure
delle impostazioni del *tuo* newsreader (notare che nel tuo post
l'header Content-Type non definisce alcun set di caratteri, cosa che
invece viene fatta negli header di Vide)?
Enrico
[1]  XPN 1.2.X, visto che lo aggiorno via CVS (e, ne sono abbastanza
sicuro, i bug risolti sono in altre posizioni)


Facebook: Massimo Bacilieri

Beccato in fallo. Scusate.

 tradotte ad minchiam.
Ehm, 


Enrico 'Henryx' Bianchi wrote:

Che volevo scrivere sendmail ed invece ho scritto una  st....
Scusate, oggi sono fuori fase.

 qualcosa. Mi consolo, sembri aver seguito una strada simile a quella che
  Ok. Hai fatto proprio quel che volevo fare io solo che non sapevo
cosa fosse uno hold space e come gestire queste cose in uno scriptfile.
Adesso sed mi appare molto piu' amichevole. :-)
  Ne approfitto (in questi giorni ho problemi a connettermi e non posso
fare lunghe ricerche in rete): c'e' possibilita' di "memorizzare" piu'
di uno hold space (o quel che e') o si puo' solo switchare tra hold e
pattern space? A parte 'h', 'g' ed 'x', insomma, non c'e' altro?
  Grazie ancora,


 A parte 'h', 'g' ed 'x', insomma, non c'e' altro?
Ci sarebbero anche H G N ed i salti condizionati.
Ma nessuno legge i manuali?

 non è proprio esatto 
Adesso ho capito perché sed mi è subito stato epidermicamente sul cazzo,
e sono passato immediatamente ad awk :-D
Il solo keybidings di VI è in grado di fare più danni cerebrali di
un'anossia permanente :-O
;-)


 Ma nessuno legge i manuali?
Da quello che ricordo, la man page di sed e` tutto fuorche` utile, molto
meglio affidarsi ad altra documentazione per capire come funziona
Enrico

 AFAIK no.
Ehm... ho dimenticato che sed implementa alcune istruzioni di salto.
Sono molto limitate ma consentono di simulare questo molto facilmente
per cui il problema originale ammette una soluzione molto semplice ed elegante:
sed ':loop s/^\( *\)>/\1 /; t loop' $inputfile

Enrico 'Henryx' Bianchi wrote:

Al contrario la pagina del manuale di sed è molto utile, solo per il fatto 
che dice chiaramente che è solo un riassunto. 
$ man sed
...
COMMAND SYNOPSIS
       This is just a brief synopsis of sed commands to serve as a reminder
       to those who already know sed;  other  documentation (such as the
       texinfo document) must be consulted for fuller descriptions.
...
SEE ALSO
       awk(1), ed(1), grep(1), tr(1), perlre(1), 
sed.info
, any of various
       books on sed, the sed FAQ (
http://sed.sf.net/grabbag/tutorials/
       sedfaq.txt), 
http://sed.sf.net/grabbag/
.
       The full documentation for sed is maintained as a Texinfo manual.  
       If the info and sed programs are properly installed at your site, the 
       command
              info sed
       should give you access to the complete manual.
sed version 4.1.4                    February 2006                    SED(1)
Come al solito nessuno legge le pagine del manuale.

 Come al solito nessuno legge le pagine del manuale.
Boh, personalmente ricordo che all'epoca trovai piu` utile leggere altri
documenti piuttosto che la man page di sed (senza contare gli esempi in
/usr/share/doc, che in alcuni casi li reputo al limite dell'assurdo)
Enrico

 sed ':loop s/^\( *\)>/\1 /; t loop' $inputfile
Cool, grazie :)
-- 
By ZeD

 /usr/share/doc, che in alcuni casi li reputo al limite dell'assurdo)
Effettivamente il file /usr/share/doc/sed/sed.html non è altro che 
il file 
sed.info
 che è anche esso un riassunto anche se molto 
completo. Però anche questo riporta una bibliografia molto utile
File: 
sed.info
,  Node: Other Resources,  Next: Reporting Bugs,  Prev: 
Limitations,  Up: Top
Other Resources for Learning About `sed'
****************************************
   In addition to several books that have been written about `sed'
(either specifically or as chapters in books which discuss shell
programming), one can find out more about `sed' (including suggestions
of a few books) from the FAQ for the `sed-users' mailing list,
available from any of:
      `
http://www.student.northpark.edu/pemente/sed/sedfaq.html
'
      `
http://sed.sf.net/grabbag/tutorials/sedfaq.html
'
   Also of interest are
`
http://www.student.northpark.edu/pemente/sed/index.htm
' and
`
http://sed.sf.net/grabbag
', which include `sed' tutorials and other
`sed'-related goodies.
   The `sed-users' mailing list itself maintained by Sven Guckes.  To
subscribe, visit `
http://groups.yahoo.com
' and search for the
`sed-users' mailing list.
Infine trovo anche io che gli esempi riportati da 
sed.info
 siano delle
astruse esibizioni di talent. Molto  utini invece gli one liner in:
http://www.student.northpark.edu/pemente/sed/sed1line.txt

 Ma nessuno legge i manuali?
  Ti assicuro che sono uno che prima di chiedere cerca. Nelle man page
non riuscivo a capire cosa fossero il pattern space e l'hold space, e
nella roba che avevo sul disco (per molte cose scarico preventivamente
un po' di documentazione, alle volte servisse) ero suppergiu' nella
stessa situazione. L'avevo anche specificato che la mia connessione era
poco valida e non potevo far ricerche.
  Lo dico solo perche' non mi va di passare per quello che non si
informa, saro' duro ma la buona volonta' che la metto tutta! :-)
  Un saluto e grazie delle info,


 informa, saro' duro ma la buona volonta' che la metto tutta! :-)
Figurati, non volevo far polemica, solo che spesso dimentico di aggiungere
degli smile alle mie risposte.

 degli smile alle mie risposte.
  Nessun problema. Non riusciresti a farmi perdere la calma nemmeno
volendo! ;-)
  Mi fa anzi perche' imparo sempre qualcosa di nuovo; e' solo che mi
spiace passare per il tipetto che chiede perche' non ha voglia di
sbattersi. Tutto qui. :-)
  Un saluto,


 
http://www.student.northpark.edu/pemente/sed/sed1line.txt
Questo e` carino, dovro` segnarmelo da qualche parte :)
Enrico

 volendo! ;-)
Ma è una sfida?  ;-)

 Ma ï¿œ una sfida?  ;-)
  Beh, no. Che se poi ci riesci non solo perdo ma mi arrabbio pure.
Comunque io del non perdere la calma ne ho fatto un lavoro... ;-)
