Pagina 1 di 1
[bash] problema stringhe di testo [risolto]
Inviato: sab 16 ago 2008, 12:46
da sya54M
salve, ho bisogno di escludere l'ultimo carattere (o byte) da una stringa di variabile lunghezza, per esempio "ciao" diventerebbe "cia" oppure "pippo" diventerebbe "pipp".
sono impazzito col comando cut ma mi sembra che possa solo selezionare e non escludere caratteri, soluzioni?
grazie e ciao!
Re: problema stringhe di testo
Inviato: sab 16 ago 2008, 13:02
da cymon
sya54M ha scritto:salve, ho bisogno di escludere l'ultimo carattere (o byte) da una stringa di variabile lunghezza, per esempio "ciao" diventerebbe "cia" oppure "pippo" diventerebbe "pipp".
sono impazzito col comando cut ma mi sembra che possa solo selezionare e non escludere caratteri, soluzioni?
grazie e ciao!
Mmmmmh, in che linguaggio?
Con un colpettino di sed puoi fare:
Codice: Seleziona tutto
cymon@chrome:~$ echo ciao > prova
cymon@chrome:~$ sed s/.$// prova
cia
Re: problema stringhe di testo
Inviato: sab 16 ago 2008, 13:13
da FireEater
Già... in che linguaggio??
In c potresti mettere uno '\0' nell'ultimo carattere(strlen).
Ciao.
Re: problema stringhe di testo
Inviato: sab 16 ago 2008, 13:44
da sya54M
perdonatemi, mi era venuto in mente dopo che ho spento il pc che non ho scritto che sto parlando di bash
Re: problema stringhe di testo
Inviato: sab 16 ago 2008, 13:52
da sya54M
comunque, grazie mille cymon

con sed funziona, però non ho capito come

,
cosa significa? è angosciate fare una cosa senza sapere come la si è fatta

Re: problema stringhe di testo
Inviato: sab 16 ago 2008, 13:59
da conraid
sya54M ha scritto:comunque, grazie mille cymon

con sed funziona, però non ho capito come

,
cosa significa? è angosciate fare una cosa senza sapere come la si è fatta

in pratica dice a sed "sostituisci il carattere, qualunque sia, prima del fine riga con niente"
. = qualsiasi carattere
$ = fine riga (se gli passi una stringa è la fine stringa, per esempio "echo pippo | sed s/.$//")
s/// = comando sed di sosituzione
Re: [bash] problema stringhe di testo
Inviato: sab 16 ago 2008, 14:00
da sya54M
e se volessi aggiungere una lettera prestabilita a una stringa come posso fare?
per esempio voglio aggiungere la lettera M a qualunque stringa e "ciao" diventerebba "ciaoM"
scusate se pongo un altra domanda ma tanto il topic è abbastanza generico...

Re: [bash] problema stringhe di testo
Inviato: sab 16 ago 2008, 14:08
da sya54M
grazie conraid, ora è tutto chiaro, avevo letto ciò che restituisce "sed --help" ma l'utilissima opzione s/// non è riportata nell'help, avrei dovuto guardare nel man.
Re: [bash] problema stringhe di testo
Inviato: sab 16 ago 2008, 14:09
da conraid
sya54M ha scritto:e se volessi aggiungere una lettera prestabilita a una stringa come posso fare?
per esempio voglio aggiungere la lettera M a qualunque stringa e "ciao" diventerebba "ciaoM"
s/$/M/
Ma in questo caso se ti serve dentro uno script non so quanto convenga usare sed
a=pippo
b=${a}M
echo b # produce pippoM
tanto per fare un esempio
Re: [bash] problema stringhe di testo
Inviato: sab 16 ago 2008, 14:16
da sya54M
conraid ha scritto:s/$/M/
perfetto! grazie infinite
conraid ha scritto:Ma in questo caso se ti serve dentro uno script non so quanto convenga usare seda=pippob=${a}Mecho b # produce pippoMtanto per fare un esempio
no, non è uno script, sed è perfetto per quello che devo fare, lo concateno ad altri comandi con |, non lavora su file.
Re: [bash] problema stringhe di testo
Inviato: sab 16 ago 2008, 16:43
da cymon
sya54M ha scritto:grazie conraid, ora è tutto chiaro, avevo letto ciò che restituisce "sed --help" ma l'utilissima opzione s/// non è riportata nell'help, avrei dovuto guardare nel man.
In verità sed è un programma a sé, più che il man, se ti interesa l'argomento, è proprio meglio recuperare una guida. Come è sempre bene recuperarne una di awk.