Pagina 1 di 1
problema con sed
Inviato: gio 26 ott 2006, 13:07
da aghnosci
scusate se la domanda potrà risultare banale ma ho un problema con sed:
devo modificare un file con + di 8000 righe che contiene i peggiori caratteri che uno non vorrebbe mai andare a sostituire, comunque le lettera accentate e altro sono riuscito a rimuoverle;
tuttavia vi sono delle righe che contengono il marcatore | e con sed non riesco a toglierlo.
ho provato sed -e "s/*|*//g" nome.file e non funziona, ho provato a cambiare gli apici a far precedere il carattere da \ a quotarlo ma non riesco in ogni modo a toglierlo.
Dove sbaglio?
Inviato: gio 26 ott 2006, 13:14
da gallows
Codice: Seleziona tutto
% cat foo
ciao || mondo| pippo|paperino
% sed 's/|//g' foo
ciao mondo pippopaperino
Inviato: gio 26 ott 2006, 14:18
da aghnosci
grazie gallows, avevo già provato quella sintassi ma non funziona, è come se non vedesse il carattere, infatti anche se apro il file con vi e cerco | non lo trova...non capisco...
il marcatore in questione in alcune occorrenze si trova subito dop a una lettera quindi speravo che facendogli fare un ricerca per *| andasse meglio...ma non è così. anche se usassi awk avrei lo stesso problema?
Inviato: gio 26 ott 2006, 18:51
da gallows
Mmm, forse quel carattere non è una pipe "|" ma una broken pipe "¦" ?
Prova ad incollare una porzione di testo dove comprare il carattere incriminato.
Inviato: gio 26 ott 2006, 18:54
da lamarozzo
ma sei sicuro? A me il codice di gallows funziona a dovere.
Non capisco poi il tuo uso degli asterischi. Nelle regexp l'asterisco dopo un carattere indica l'occorrenza 0,1 o più volte del carattere stesso.
Strano
Inviato: gio 26 ott 2006, 18:55
da lamarozzo
gallows ha scritto:Mmm, forse quel carattere non è una pipe "|" ma una broken pipe "¦" ?
ci avevo pensato anch'io, però nel post il carattere la pipe ce l'ha messa
Inviato: gio 26 ott 2006, 20:06
da mauro
aghnosci ha scritto:se apro il file con vi e cerco | non lo trova...non capisco...
se apri il file con vim, sposti il cursore sulla pipe e gli chiedi il codice ascii ( :as ) cosa ti salta fuori?
a me la pipe da'
<|> 124, Hex 7c, Octal 174
e la broken pipe da'
<¦> <|&> <M-&> 166, Hex a6, Octal 246
Inviato: lun 30 ott 2006, 9:48
da aghnosci
scusate se rispondo un pò in ritardo ma non ho potuto dedicarmi alla faccenda in questi giorni.
Dunque se chiedo a vim il carattere esadeciamle del carattere mi da 7c0a. Vi devo informare che il file dove lavoro è un csv fatto da un documento excel generato con un office credo abbastanza vecchio. La domanda ora è si può con vi o sed cercare tramite codice esadecimale e sostituire?
Inviato: lun 30 ott 2006, 13:03
da aghnosci
va beh son riuscito a risolvere usando awk così:
awk '{sub(/[|]/, "");print}' myfile > myfile2
grazie comunque dei suggerimenti