[Risolto]Catturare la prima parola della linea

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
eb-ash
Prode Principiante
Messaggi: 204
Iscrizione: lunedì 18 febbraio 2019, 18:02
Sesso: Maschile

[Risolto]Catturare la prima parola della linea

Messaggio da eb-ash »

Codice: Seleziona tutto

echo "Topolino e Topolina
Topolino Paperino e Topolina" | gsed -e 's/^\(.*\) \(e\) \(.*\)/\1, Gambadilegno \2 \3/gi'
Output desiderato:


Topolino, Gambadilegno e Topolina
Topolino Paperino e Topolina
Cosa sbaglio? Io vorrei che prendesse solo se c'è una sola parola all'inizio prima della e ,non due
Ultima modifica di eb-ash il giovedì 18 febbraio 2021, 13:33, modificato 1 volta in totale.
si è vero uso un mac. Ma detesto i maccisti del web. Se la tirano, non ti aiutano, sono abituati ad avere la pappa fatta e non costruirsi le cose, e sono troppo pochi... quando serve non ci sono mai. Voglio imparare un po' di Bash per fare tante cose utili perchè questo sono qua... senza formazione specifica ma in fondo è unix che permette di fare le cose a pezzetti, no?
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: Catturare la prima parola della linea

Messaggio da vaeVictis »

Codice: Seleziona tutto

vaevictis@vaevictis-N56VV:~$ echo "Topolino e Topolina
Topolino Paperino e Topolina" | sed -e 's/^\([[:alnum:]]*\) e \([[:alnum:]]*\)/\1, Gambadilegno e \2/gi'
Topolino, Gambadilegno e Topolina
Topolino Paperino e Topolina
Se metti .* matchi ogni carattere, quindi nella seconda riga lui prende lo stesso tutto fino alla prima e (quella dopo Paperino).
Mettendo [[:alnum:]] prende qualsiasi carattere alfanumerico, quindi una parola. Ci sono altri modi per prendere una singola parola, che trovi con una ricerca su Google.
Ultima modifica di vaeVictis il giovedì 18 febbraio 2021, 18:31, modificato 1 volta in totale.
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Avatar utente
eb-ash
Prode Principiante
Messaggi: 204
Iscrizione: lunedì 18 febbraio 2019, 18:02
Sesso: Maschile

Re: Catturare la prima parola della linea

Messaggio da eb-ash »

Grazie Vae, per le spiegazioni! :woot:
si è vero uso un mac. Ma detesto i maccisti del web. Se la tirano, non ti aiutano, sono abituati ad avere la pappa fatta e non costruirsi le cose, e sono troppo pochi... quando serve non ci sono mai. Voglio imparare un po' di Bash per fare tante cose utili perchè questo sono qua... senza formazione specifica ma in fondo è unix che permette di fare le cose a pezzetti, no?
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: [Risolto]Catturare la prima parola della linea

Messaggio da vaeVictis »

Un altro modo è usare \s.
In questo modo va bene anche se tra le parole dovessero esserci più spazi o tab.
Appena sono al PC ti faccio un esempio
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: [Risolto]Catturare la prima parola della linea

Messaggio da vaeVictis »

Codice: Seleziona tutto

vaevictis@vaevictis-N56VV:~$ echo "Topolino        e Topolina
Topolino Paperino e Topolina" | sed -e 's/^\([[:alnum:]]*\)\s*e\s*\([[:alnum:]]*\)/\1, Gambadilegno e \2/gi'
Topolino, Gambadilegno e Topolina
Topolino Paperino e Topolina
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 17 ospiti