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 inserire, eliminare, sostituire, ecc. Diversi tipi di attività di sostituzione possono essere eseguiti 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 possono verificarsi più volte nella stringa o in un file in cui verrà eseguita la ricerca. Come è possibile sostituire l'ultima occorrenza del testo o del modello di ricerca è stato mostrato in questo tutorial.

Sostituire 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: sostituire l'ultima occorrenza di una parola basata sul modello

Il seguente comando "sed" cercherà la parola 'Php' nella stringa e sostituire la parola di ricerca 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. Qui, 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 di contatore 2. Il secondo valore contante 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 per valore per doppio zero (0 0).

$ echo "Il prezzo del prodotto è di $ 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 'Jun' nella stringa e sostituire l'ultima occorrenza della parola con il valore, 'Maggio'.

$ printf "%s \ n" gennaio febbraio giugno giugno giugno | Tr '\ n' "|
sed 's/\ (.*\) Jun/\ 1may/'| tr "'\ n'

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

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

Crea un file di testo denominato Saldi.TXT con il seguente contenuto per testare il comando "sed" utilizzato in questa parte del tutorial per sostituire l'ultima occorrenza di un testo basato sul modello.

Saldi.TXT

Importo dell'anno mese
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 sostituire l'ultima occorrenza di questa parola con la parola, 'Luglio'.

$ gatti vendite.TXT
$ sed '$ s/gennaio/luglio/' vendite.TXT

La seguente output apparirà dopo aver eseguito i comandi. La parola 'Gennaio' appare due volte nel file. L'ultima occorrenza che esiste nel 7th 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' Il comando viene utilizzato per invertire il contenuto del file. 'tac' Il comando viene utilizzato con il comando "sed" nel comando seguente per sostituire l'ultima occorrenza di '2019'Con la parola, '2017'.

$ gatti vendite.TXT
$ tac vendite.txt | Sed '0,/2019/S/2019/2017/' | tac

La 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 in 'Sed' comanda di sostituire il primo verificarsi di '2019' che è l'ultima occorrenza nel valore del file per anno, '2017'. Dopo la sostituzione, l'output è stato inviato al 'tac' comanda di nuovo invertire l'output. In questo modo, l'ultima occorrenza di '2019'è stato sostituito dal valore, '2017'.

Esempio-7: sostituire tutto di una linea in base all'ultima occorrenza di una parola

Il seguente 'Sed' Il comando sostituirà la riga con una scheda (\ t) del testo delimitato in cui la linea inizia con la stringa 'Mar' per l'ultima volta nel file.

$ gatti vendite.TXT
$ tac vendite.txt | sed '0,/^mar.*/s/^mar.*/Luglio \ t \ t2018 \ t $ 400000/ '| tac

La 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 5th linea. Il primo 'tac' Il comando è stato utilizzato per invertire il contenuto del file e ha inviato l'output a 'sed ' comando. 'sed"Il comando ha sostituito la riga con un testo,"Jully 2018 $ 400000'Dove la stringa di ricerca trovata per la prima volta. L'output di il 'sed'Il comando è stato inviato al 'tac' comanda nuovamente di invertire l'output che è il contenuto principale del file.

Conclusione:

Il comando 'sed' può essere utilizzato per sostituire qualsiasi parte di una stringa o una riga del file in diversi modi usando i modelli di espressione regolari. Questo tutorial ha mostrato i modi per sostituire l'ultima occorrenza del testo di ricerca in una stringa o un file utilizzando più comandi "sed". In questo tutorial è stato mostrato 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 temporaneamente l'output. È necessario utilizzare l'opzione '-i' con il comando 'sed' per modificare il contenuto del file in modo permanente in base al modello.