problema con sed

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
aghnosci
Linux 0.x
Linux 0.x
Messaggi: 88
Iscritto il: lun 13 set 2004, 0:00

problema con sed

Messaggio 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?

Avatar utente
gallows
Staff
Staff
Messaggi: 3471
Iscritto il: lun 20 set 2004, 0:00
Desktop: cwm
Distribuzione: OpenBSD
Località: ~/
Contatta:

Messaggio da gallows »

Codice: Seleziona tutto

% cat foo
ciao || mondo| pippo|paperino
% sed 's/|//g' foo
ciao  mondo pippopaperino

aghnosci
Linux 0.x
Linux 0.x
Messaggi: 88
Iscritto il: lun 13 set 2004, 0:00

Messaggio 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?

Avatar utente
gallows
Staff
Staff
Messaggi: 3471
Iscritto il: lun 20 set 2004, 0:00
Desktop: cwm
Distribuzione: OpenBSD
Località: ~/
Contatta:

Messaggio 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.

Avatar utente
lamarozzo
Linux 3.x
Linux 3.x
Messaggi: 732
Iscritto il: gio 14 lug 2005, 0:00
Desktop: xfce
Distribuzione: archlinux
Località: Roma

Messaggio 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

Avatar utente
lamarozzo
Linux 3.x
Linux 3.x
Messaggi: 732
Iscritto il: gio 14 lug 2005, 0:00
Desktop: xfce
Distribuzione: archlinux
Località: Roma

Messaggio 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

Avatar utente
mauro
Linux 2.x
Linux 2.x
Messaggi: 281
Iscritto il: gio 11 mag 2006, 21:51
Slackware: current
Kernel: uno degli ultimi...
Desktop: dwm

Messaggio 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

aghnosci
Linux 0.x
Linux 0.x
Messaggi: 88
Iscritto il: lun 13 set 2004, 0:00

Messaggio 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?

aghnosci
Linux 0.x
Linux 0.x
Messaggi: 88
Iscritto il: lun 13 set 2004, 0:00

Messaggio da aghnosci »

va beh son riuscito a risolvere usando awk così:
awk '{sub(/[|]/, "");print}' myfile > myfile2
grazie comunque dei suggerimenti

Rispondi