[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