[Linux-Biella] bash ed sqlite3: stringa di $x spazi

Paul TT paultt a bilug.linux.it
Lun 16 Feb 2009 19:05:30 CET


Daniele Vallini wrote:
> Il Mon, 16 Feb 2009 13:13:32 +0100
> Paul TT <paultt a bilug.linux.it> ha scritto:
>
>   
>>> Ho risolto cosi' il problema, non e' elegante ma funziona:
>>>
>>> xx="^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" # stringa di spaziatura
>>> xcliente=${#cliente}                          # lunghezza della stringa cliente
>>> ycliente=`expr 35 - $xcliente`                # nr caratteri da aggiungere per arrivare a |
>>> zcliente=`expr substr $xx 1 $ycliente`        # stringa contenente i caratteri di spaziatura
>>>
>>> successivamente sed sostituisce i caratteri temporanei con gli spazi:
>>>
>>>  s/\^/ /g
>>>
>>> Sono obbligato a questo poiche' altrimenti una stringa con n spazi e'
>>> semplicemente una stringa vuota ed il tutto non funziona.
>>>
>>>   
>>>       
>> no
>> puoi evitare di usare sed se prima del giro reimposti l'IFS, togliendo 
>> lo spazio dai separatori, per cui puoi usare direttamente la stringa di 
>> spazi
>>     
>
> cioe' il separatore a stringa nulla?  IFS=""
>
> OK, pero' sed devo usarlo egualmente perche' sqlite3 e' molto bello
> ma estremamente essenziale e non fa calcoli, salvo la funzione SUM.
> Devo quindi andare in pipe con bc, ottimo come efficienza, ma quanto mai
> vacconazzo poiche' per lui 0.16 si scrive solo .16 e 2.30 si scrive solo
> 2.3 il che in una fattura presenta piuttosto male, quindi chiedo a sed
> di restaurarmi l'output brutale di bc.
>   
scale=2
4.6/2
2.30

oppure potresti usare printf per filtrare il numero di interi e 
decimali, pero' credo usi la virgola in un locale it.
esportando il locale en dovrebbe funzionare
ma va bene anche sed...

;P
>   
>> puoi anche evitare di usare xcliente mettendo direttamente la parte tra 
>> {} sulla riga di ycliente
>>     
>
>  ycliente=`expr 35 - ${#cliente}`  
>
> Ok cosi? non ho provato ma mi pare buona idea, risparmia caratteri :-) 
>
> Grazie per le osservazioni.
>
>   


-- 
Sai che in tedesco Vo vuol dire Mer?




Maggiori informazioni sulla lista Linux