sed

Come sostituire l'ultima occorrenza usando 'sed'

Come sostituire l'ultima occorrenza usando 'sed'
Il comando 'sed' viene utilizzato in Linux per vari tipi di operazioni di testo, come inserimento, eliminazione, sostituzione, ecc. È possibile eseguire diversi tipi di attività di sostituzione utilizzando facilmente il comando 'sed'. Qualsiasi attività di sostituzione può essere eseguita in base al testo o al modello di ricerca. Il testo o il modello di ricerca può verificarsi più volte nella stringa o in un file in cui verrà eseguita la ricerca. In questo tutorial è stato mostrato come sostituire l'ultima occorrenza del testo o del modello di ricerca.

Sostituisci l'ultima occorrenza del testo in una stringa:

Questa sezione mostra come l'ultima occorrenza del modello di ricerca in una stringa può essere sostituita usando il comando 'sed'.

Esempio 1: Sostituisci l'ultima occorrenza di una parola in base al modello

Il seguente comando 'sed' cercherà la parola 'PHP' nella stringa e sostituisci la parola cercata con la parola 'AngularJS' se la parola esiste nella stringa.

$ echo "Java PHP Bash Python JavaScript PERL PHP Laravel" |
sed 's/\(.*\)PHP/\1AngularJS/'

Il seguente output apparirà dopo aver eseguito il comando. Ecco, la parola 'PHP' esiste due volte nella stringa e l'ultima occorrenza è stata sostituita dalla parola' AngularJS'.

Esempio 2: sostituire l'ultima occorrenza del modello basato su cifre

Il seguente comando 'sed' cercherà qualsiasi cifra nella stringa e sostituirà l'ultima cifra con il numero 9.

$ echo "Il primo valore del contatore 2. Il secondo valore del contatore 4" |
sed 's/\(.*\)[0-9])*/\19/'

Il seguente output apparirà dopo aver eseguito il comando. Qui, la cifra appare due volte nella stringa e l'ultima cifra, 4, è stato sostituito dal numero 9.

Esempio 3: sostituire l'ultima cifra di un numero in base al modello

Il seguente comando 'sed' sostituirà l'ultima cifra che esiste nel valore della stringa con il valore con doppio zero (0 0).

$ echo "Il prezzo del prodotto è $ 500." | sed 's/\(.*\)[0-9]/\100/'

Il seguente output apparirà dopo aver eseguito il comando. Qui, 500 esiste nel valore della stringa. Quindi, secondo il comando di sostituzione, l'ultimo zero di 500 è stato sostituito da due doppi zero e il valore sostituito è 5000.

Esempio 4: sostituire l'ultima occorrenza di una parola con un'altra parola

Il seguente comando 'sed' cercherà la parola 'giu' nella stringa e sostituisci l'ultima occorrenza della parola con il valore, 'Maggio'.

$ printf "%s\n" Gen Feb Giu Apr Giu Dic | tr '\n' " |
sed 's/\(.*\)Giu/\1Maggio/' | tr " '\n'

Il seguente output apparirà dopo aver eseguito il comando. Ecco, la parola 'giu' esiste due volte nella stringa e l'ultima occorrenza è stata sostituita dalla parola 'Maggio'.

Sostituisci l'ultima occorrenza di un testo in un file:

Crea un file di testo chiamato I saldi.TXT con il seguente contenuto per testare il comando 'sed' usato in questa parte del tutorial per sostituire l'ultima occorrenza di un testo basato sul modello.

I saldi.TXT

Mese Anno Importo
Gennaio 2018 $ 200000
Marzo 2019 $ 300000
Aprile 2019 $ 150000
Marzo 2020 $ 350000
Maggio 2019 $ 210000
Gennaio 2020 $ 240000

Esempio-5: sostituire l'ultima occorrenza di una parola con un'altra parola

Il seguente comando 'sed' cercherà la parola 'Gennaio' nel file e sostituisci l'ultima occorrenza di questa parola con la parola, 'Luglio'.

$ cat Vendite.TXT
$ sed '$ s/gennaio/luglio/' Vendite.TXT

Il seguente output apparirà dopo aver eseguito i comandi. La parola 'Gennaio' appare due volte nel file. L'ultima occorrenza che esiste nel 7questo la riga del file è stata sostituita dalla parola 'Luglio'nell'output.

Esempio 6: sostituire l'ultima occorrenza di un numero con un altro numero

'tac' comando viene utilizzato per invertire il contenuto del file. 'tac' comando viene utilizzato con il comando 'sed' nel comando seguente per sostituire l'ultima occorrenza di '2019'con la parola, '2017'.

$ cat Vendite.TXT
$ tac Vendite.txt | sed '0,/2019/s/2019/2017/' | tac

Il seguente output apparirà dopo aver eseguito i comandi. Qui, il valore dell'anno, '2019' appare tre volte nel file. Il primo, 'tac' il comando ha invertito il contenuto del file e ha inviato l'output nel 'sed' comando per sostituire la prima occorrenza di '2019' che è l'ultima occorrenza nel file in base al valore dell'anno, '2017'. Dopo la sostituzione, l'output è stato inviato al 'tac' comando per invertire nuovamente l'output output. In questo modo, l'ultima occorrenza di '2019'è stato sostituito dal valore, '2017'.

Esempio-7: Sostituisci tutto di una riga in base all'ultima occorrenza di una parola

Il seguente 'sed' comando sostituirà la riga con un testo delimitato da tabulazione (\t) dove la riga inizia con la stringa 'Mar' per l'ultima volta nel file.

$ cat Vendite.TXT
$ tac Vendite.txt | sed '0,/^Mar.*/s/^Mar.*/Luglio\t\t2018\t$ 400000/' | tac

Il seguente output apparirà dopo aver eseguito i comandi. Due righe nel file iniziano con la stringa, 'Mar', e l'ultima occorrenza di questa stringa appare in 5questo linea. Il primo 'tac' il comando è stato utilizzato per invertire il contenuto del file e ha inviato l'output al 'sed' comando. 'sed' il comando ha sostituito la riga con un testo, 'Luglio 2018 $ 400000'dove la stringa di ricerca è stata trovata per la prima volta. L'uscita di il 'sed' il comando è stato inviato al 'tac' comando di nuovo per invertire l'output che è il contenuto principale del file.

Conclusione:

Il comando 'sed' può essere utilizzato per sostituire qualsiasi parte di una stringa o di una riga del file in modi diversi utilizzando modelli di espressioni regolari. Questo tutorial ha mostrato i modi per sostituire l'ultima occorrenza del testo di ricerca in una stringa o in un file utilizzando più comandi 'sed'. In questo tutorial è stato mostrato anche come il comando 'tac' può essere usato con il comando 'sed' per sostituire l'ultima occorrenza del testo di ricerca. Ma tutti i comandi usati qui genereranno l'output temporaneamente. Devi usare l'opzione '-i' con il comando 'sed' per cambiare il contenuto del file in modo permanente in base al modello.

Come utilizzare AutoKey per automatizzare i giochi Linux
AutoKey è un'utilità di automazione desktop per Linux e X11, programmata in Python 3, GTK e Qt. Utilizzando la sua funzionalità di scripting e MACRO, ...
Come mostrare il contatore FPS nei giochi Linux
I giochi Linux hanno avuto una grande spinta quando Valve ha annunciato il supporto Linux per il client Steam e i loro giochi nel 2012. Da allora, mol...
Come scaricare e giocare a Sid Meier's Civilization VI su Linux
Introduzione al gioco Civilization 6 è una versione moderna del concetto classico introdotto nella serie dei giochi Age of Empires. L'idea era abbasta...