PDA

Visualizza la versione completa : [bash] rimuovere carriage return finale da file


comisat
08-03-2006, 19:36
Salve a tutti :)
il mio problema e' come da titolo e deriva da questo:

se faccio da shell un
echo foo > file
file viene creato con foo + carriage return; file viene infatti creato di 4 byte e aprendolo con un editor esadecimale ho appunto 66 6f 6f 0a (foo "a_capo").

Aprendo il file con nano il "ritorno a capo" non riesco ad eliminarlo (mi mantiene il file su due righe per intenderci, foo + seconda riga vuota sotto data dal CR); se lo apro con kedit invece la riga riesco a toglierla (il file difatti mi diviene di 3 byte e in esadecimale lo 0a sparisce - anche se nano mi fa vedere la "riga in piu'" in ogni caso :dottò: ).

La mia necessita', con bash, e' di creare un file con i soli caratteri inviati dallo stdout (di echo o da altro al limite) senza nessun carriage return o line feed che sia. Si puo' fare ? Oppure, in alternativa, come posso rimuovere il CR dal file creato ?

In nota: dopo aver creato echo foo > file
ho provato a passarlo a questo script

stringa=$1
b=$(sed -n '$p' $stringa)
lung_str=${#b}
echo $lung_str

e mi torna 3 come se il CR non ci fosse, cosa che di fatto non e' vera..

Mi staro' perdendo in un bicchiere di acqua ma mi sto facendo mooolte paranoie...
Help !
:confused:

U-bahn
08-03-2006, 23:09
prima di tutto, una precisazione...linux non usa il carriage return, ma solo il line feed (il mac solo il cr e windows entrambi) :)

usa l'opzione "-n" ...

comunque, anche non sapendolo, sarebbe bastato leggere il man di echo...non è difficile :madai!?:

comisat
09-03-2006, 00:13
:stordita: ehm.. qnd si dice perdersi in un bicchiere di acqua.. :fagiano:

tante pippe mentali per nulla...

grazie :)

Loading