Salve, ed eccomi qui :)

esiste un modo per cancellare da una stringa i primi 9 caratteri e poi 50 caratteri alla fine della stringa?

ci tengo a segnalare in questi caratteri ci sono anche questo tipo di caratteri <"="/> ed anche lo spazietto,perchè qualche esempio che ho trovato cercando non funziona e secondo me la causa è dovuto ad uno di quei caratteri.

Saluti

chiesto 18 Mag '15, 12:11

Davide_74's gravatar image

Davide_74
617255974


Ciao @Davide_74,

Per togliere i caratteri da una stringa puoi utilizzare la funzionalità per le sottostringhe di bash ${string:position:length}

In particolare:

string="abcdefghijklmnopqrstuwxyz0123456789 <>=!?abcdefghijklmnopqrstuwxyz0123456789"
echo "${string:9:${#string}-59}"

Dovrebbe risolvere il tuo problema.

coll. permanente

ha risposto 18 Mag '15, 13:09

corti-nico's gravatar image

corti-nico
891319

modificato 20 Mag '15, 18:39

Grazie per la risposta,ma purtroppo non risolve il mio problema.

nel tuo esempio tolgo i caratteri a stringhe conosciute,purtroppo le stringhe cambiano.

son riuscito ad estrarre le stringhe e poi salvarle in un file, peccato che le salva con il numero crescente cioè parte dal 13 quindi, "13. stringa" 14. stringa 15. stringa" fino a 45. resta cmq da eliminare i 4 caratteri all inizio, i 2 numeri il puntino e lo spazietto.

cercando ho trovato qualche esempio ma purtroppo l opposto :(

[edit] trovato il comando come sempre il carissimo sed :) "sed -i 's/^..../''/g' file"

Saluti

(18 Mag '15, 18:34) Davide_74 Davide_74's gravatar image

@Davide_74: la risposta di @corti-nico mi pare impostata bene (con qualche correzione), non capisco perché non risolve il tuo problema: la stringa è una variabile, non è una costante come dici tu.
Correzioni che farei: ${#string}-50 dev'essere la lunghezza, non il numero dell'ultimo carattere. Il 3 rappresenta il numero del primo carattere, ma i caratteri sono contati a partire da 0. Inoltre metterei le virgolette all'argomento di echo.

(18 Mag '15, 20:42) enzotib ♦♦ enzotib's gravatar image

allora chiedo scusa,ho soltanto letto l esempio ma non ho provato,però,leggendo bene adesso senza provare,li mi sembra di leggere che toglie i 50 alla fine,i 9 iniziali?

cmq io riguardo le stringhe ho risolto,poi è nato un altro problema che per risolverlo molto probabilmente devo "chiedere" ancora :(

Saluti e Grazie

(18 Mag '15, 21:03) Davide_74 Davide_74's gravatar image

Toglie i 50 alla fine e i primi 3 (non i primi 9). Per quanto riguarda le correzioni suggerite

  • ${#string}-50 è proprio la lunghezza, in quanto ${#string} restituisce la lunghezza in caratteri della stringa, sottraendo 50 si ottiene la lingua desiderata.

  • Il 3 va bene in quanto si tolgono i primi 3 caratteri, e si vuole il quarto. Vedi esempio sotto.

stringZ=abcABC123ABCabc 0123456789..... 0-based indexing.

  • Le virgolette ci sono già altrimenti non funziona :)
(20 Mag '15, 17:41) corti-nico corti-nico's gravatar image
1

@corti-nico: sono stato impreciso, lunghezza o indice dell'ultimo carattere sono (a meno di una unità) la stessa cosa, quello che intendevo dire è che non si teneva conto dei caratteri rimossi all'inizio, infatti hai corretto 50 in 53. La seconda osservazione era più per chiarire la cosa a @Davide_74, dato che comunque non era chiaro dal contesto come fosse stato inteso il 3. Per quanto riguarda le virgolette, mi riferivo alla seconda riga, non alla prima. E' sempre bene racchiudere le stringhe tra virgolette doppie, si possono fare esempi in merito.

(20 Mag '15, 18:02) enzotib ♦♦ enzotib's gravatar image

Grazie mille @enzotib ho integrato la modifica ;)

(20 Mag '15, 18:06) corti-nico corti-nico's gravatar image

ok di nuovo Grazie.

quindi se metto il 9 al posto del 3 cancella 9 caratteri iniziali. accetto la risposta di @corti-nico come giusto che sia.

cmq volevo provare ma non ho capito come si applica :):(

Sauti

(20 Mag '15, 18:36) Davide_74 Davide_74's gravatar image

@Davide_74 perdonami ma ho letto male, ero convinto fosse 3 invece di 9. Ho corretto al risposta adesso trovi la lunghezza desiderata.

Per provarlo puoi creare un file con questo contenuto http://paste.ubuntu.com/11247595/ e invocarlo da terminale. Ovviamente la variabile string qui è posta d'esempio ad una stringa lunga casuale, ma puoi cambiarla a piacimento oppure farle assumere il valore che vuoi (per esempio le linee di un file in input).

(20 Mag '15, 18:41) corti-nico corti-nico's gravatar image
La tua risposta
abilita/disabilita anteprima

Segui questa domanda

Via email:

Una volta eseguito l'accesso potrai iscriverti a tutti gli aggiornamenti qui

Via RSS:

Risposte

Risposte e commenti

Basi di markdown

  • *corsivo* o __corsivo__
  • **grassetto** o __grassetto__
  • collegamento:[testo](http://url.com/ "titolo")
  • immagine?![alt testo](/path/img.jpg "titolo")
  • elenco numerato: 1. Foo 2. Bar
  • per aggiungere un'interruzione di riga, aggiungi due spazi a fine riga e premi «Invio»
  • è supportato anche semplice HTML

Tag:

×93

domanda posta: 18 Mag '15, 12:11

domanda visualizzata: 2,067 volte

ultimo aggiornamento: 20 Mag '15, 18:42

Chiedi è un servizio di supporto gestito da Ubuntu-it. Contattaci!

powered by OSQAPostgreSQL database
Ubuntu e Canonical sono marchi registrati da Canonical Ltd.