Rimozione di caratteri da una stringa in Bash

Removing Characters From String Bash

A volte, potrebbe essere necessario rimuovere i caratteri da una stringa. Qualunque sia la ragione, Linux ti fornisce vari strumenti integrati e pratici che ti consentono di rimuovere i caratteri da una stringa in Bash. Questo articolo mostra come utilizzare questi strumenti per rimuovere i caratteri da una stringa.

L'articolo spiega come eseguire quanto segue:



  • Rimuovi il carattere dalla stringa usando sed
  • Rimuovi il carattere dalla stringa usando awk
  • Rimuovi il carattere dalla stringa usando cut
  • Rimuovi il carattere dalla stringa usando tr

I comandi mostrati in questo articolo sono stati eseguiti in Ubuntu 20.04 Focal Fossa. Gli stessi comandi possono essere eseguiti anche su altre distribuzioni Linux che hanno a disposizione gli strumenti di cui sopra. Useremo l'applicazione Terminale predefinita per eseguire i comandi. Puoi accedere all'applicazione Terminale usando la scorciatoia da tastiera Ctrl+Alt+T.



Rimuovi i caratteri dalla stringa usando sed

Sed è un'utilità potente e pratica utilizzata per la modifica di flussi di testo. È un editor di testo non interattivo che consente di eseguire manipolazioni di testo di base sui flussi di input. Puoi anche usare sed per rimuovere i caratteri indesiderati dalle stringhe.



A scopo dimostrativo, useremo una stringa di esempio e poi la invieremo al comando sed.

Rimuovi carattere specifico dalla stringa

Usando sed, puoi rimuovere un carattere specifico da una stringa. Ad esempio, per rimuovere h dalla stringa Ciao, come stai? il comando sarebbe:

$buttato fuori 'Ciao, come stai?' | sed 'SH//'

Questo rimuoverà solo la prima occorrenza di 'h' nella stringa.
Rimuovi carattere specifico da String1
Per rimuovere tutte le occorrenze di 'h' dalla stringa, utilizzare il seguente comando:



$buttato fuori 'Ciao, come stai?' | sed 's/h//g'

In cui si G sta per globale. Rimuoverà tutte le occorrenze di 'h' nella stringa.
Rimuovi carattere specifico da String2

Rimuovi il primo carattere dalla stringa

Per rimuovere il primo carattere dalla stringa Ciao, come stai? il comando sarebbe:

$buttato fuori 'Ciao, come stai?' | sed 's/^.//' file

Dove (.) corrisponde esattamente a un singolo carattere e (^) corrisponde a qualsiasi carattere all'inizio della stringa.
Rimuovi il primo carattere dalla stringa

Rimuovi l'ultimo carattere dalla stringa

Per rimuovere l'ultimo carattere dalla stringa Ciao, come stai? il comando sarebbe:

$buttato fuori 'Ciao, come stai?' | sed 's/.$//'

In cui si ( . ) corrisponde esattamente a un singolo carattere e ($) corrisponde a qualsiasi carattere alla fine della stringa.
Rimuovi l'ultimo carattere dalla stringa

Rimuovi il primo e l'ultimo carattere dalla stringa

Per rimuovere il primo e l'ultimo carattere dalla stringa Ciao, come stai? il comando sarebbe:

$buttato fuori 'Ciao, come stai?' | sed 's /^.//; s /.$//'

Rimuovi il primo e l'ultimo carattere dalla stringa

Rimuovi i caratteri dalla stringa usando awk

Awk è un potente linguaggio di scripting utilizzato per la corrispondenza dei modelli, insieme all'elaborazione del testo. Awk ti consente di filtrare e trasformare il testo in vari modi. Puoi anche usare awk per rimuovere i caratteri dalle stringhe.

A scopo dimostrativo, useremo una stringa di esempio e poi la invieremo al comando awk.

Rimuovi il primo carattere da una stringa

Per rimuovere il primo carattere dalla stringa Ciao, come stai? il comando sarebbe:

$buttato fuori 'Ciao, come stai?' | awk '{ print substr( $0, 2 ) }'

Dove ($0) è l'intera stringa di destinazione e (2) è la posizione iniziale del carattere. Il comando precedente rimuove il primo carattere, 'h', carattere numero '1', e restituisce la stringa di destinazione che inizia con il secondo carattere, 'e.'
Rimuovi il primo carattere da una stringa

Rimuovi i primi due caratteri dalla stringa

Puoi anche rimuovere un numero specifico di caratteri dall'inizio di una stringa. Ad esempio, per rimuovere i primi due caratteri dalla stringa Ciao, come stai? il comando sarebbe:

$buttato fuori 'Ciao, come stai?' | awk '{ print substr ($0, 3 ) }'

Il comando precedente rimuoverà i primi due caratteri, 'lui' o i numeri di carattere '1 e 2' e restituisce la stringa di destinazione che inizia con il numero di carattere '3' o 'l'.
Rimuovi i primi due caratteri dalla stringa

Rimuovi l'ultimo carattere dalla stringa

Per rimuovere l'ultimo carattere da Ciao, come stai? il comando sarebbe:

$buttato fuori 'Ciao, come stai?' | awk '{ print substr($0, 1, length($0)-1 ) }'

In cui si lunghezza($0)-1 significa detrarre ' 1 ' dalla lunghezza totale del carattere.

Il comando precedente stamperà la stringa che inizia con il numero di carattere ' 1 ' fino a lunghezza($0)-1 per togliere l'ultimo carattere.

Ci sono ' 19 ' caratteri (spazi inclusi) nella stringa precedente. Il comando funzionerà stampando tutti i caratteri, iniziando con il carattere ' 1 ' e fino al carattere ' 18 ,' rimuovendo l'ultimo carattere ' 19 . '

rmv last char frm string

Rimuovi gli ultimi due caratteri dalla stringa

Per rimuovere gli ultimi due caratteri da Ciao, come stai? il comando sarebbe:

$buttato fuori 'Ciao, come stai?' | awk '{ print substr($0, 1, length($0)-2 ) }'

In cui si lunghezza($0)-2 significa detrarre ' 2 ' dalla lunghezza totale del carattere.

Il comando precedente stamperà la stringa, che inizia con il numero di carattere ' 1 ' e fino al numero di carattere ' lunghezza($0)-2 ,' per rimuovere gli ultimi due caratteri nella stringa.
Rimuovi gli ultimi due caratteri dalla stringa

Rimuovi sia il primo che l'ultimo carattere dalla stringa

Per rimuovere sia il primo che l'ultimo carattere dalla stringa Ciao, come stai? il comando sarebbe:

$buttato fuori 'Ciao, come stai?' | awk '{print substr($0, 2, lunghezza($0) - 2)}'

In cui si lunghezza($0)-2 significa detrarre ' 2 ' dalla lunghezza totale del carattere.

Il comando precedente stamperà la stringa, che inizia con il numero di carattere ' 2 'fino al numero di caratteri' lunghezza($0)-2 ,' per rimuovere il primo e l'ultimo carattere.

Rimuovi sia il primo che l'ultimo carattere dalla stringa

Rimuovi il carattere dalla stringa usando il taglio

Cut è uno strumento da riga di comando comunemente utilizzato per estrarre una porzione di testo da una stringa o da un file e stampare il risultato su un output standard. Puoi anche usare questo comando per rimuovere i caratteri da una stringa.

A scopo dimostrativo, utilizzeremo una stringa di esempio e la indirizzeremo al comando cut.

Rimuovi il primo carattere dalla stringa

Per rimuovere il primo carattere dalla stringa, Ciao, come stai? il comando sarebbe:

$buttato fuori 'Ciao, come stai?' | tagliare -C 2-

Questo comando stamperà la stringa, iniziando con il secondo carattere, rimuovendo il primo carattere.
rmv cut -c

Rimuovi i primi quattro caratteri dalla stringa

Per rimuovere i primi quattro caratteri dalla stringa Ciao, come stai? il comando sarebbe:

$buttato fuori 'Ciao, come stai?' | tagliare -C 5-

Questo comando stamperà la stringa, a partire dal quinto carattere, rimuovendo i primi quattro caratteri.
Rimuovi i primi quattro caratteri dalla stringa

Stampa stringa tra il 2° e il 5° carattere

Per stampare la stringa Ciao, come stai? tra il secondo e il quinto carattere , il comando sarebbe:

$buttato fuori 'Ciao, come stai?' | tagliare -C 2-5

Questo comando stamperà la stringa, a partire dal secondo carattere e fino al quinto carattere, rimuovendo i caratteri di inizio e fine rimanenti.
rmv 2a e 5a c2

Rimuovi l'ultimo carattere dalla stringa

Per rimuovere l'ultimo carattere dalla stringa Ciao, come stai? utilizzare il tagliare comando con rev , come segue:

$buttato fuori 'Ciao, come stai?' | rev | tagliare -c2- | rev

Questo comando funziona prima invertendo la stringa, quindi tagliando il primo carattere e infine invertendo di nuovo per darti l'output desiderato.
02Rimuovi l'ultimo carattere dalla stringa

Rimuovi gli ultimi quattro caratteri dalla stringa

Per rimuovere gli ultimi quattro caratteri dalla riga Ciao, come stai? il comando sarebbe:

$buttato fuori 'Ciao, come stai?' | rev | tagliare -c5- | rev

Questo comando funziona prima invertendo la stringa, quindi tagliando i primi quattro caratteri e quindi invertendo di nuovo per darti l'output desiderato.
rmv ultimi quattro caratteri

Rimuovi il primo e l'ultimo carattere dalla stringa

Per rimuovere il primo e l'ultimo carattere dalla stringa Ciao, come stai? utilizzare il tagliare comando con rev , come segue:

$buttato fuori 'Ciao mondo!' | tagliare -c2- | rev | tagliare -c2- |rev

Questo comando funziona tagliando il primo carattere, quindi invertendo la stringa e tagliando il suo primo carattere, quindi invertendo di nuovo per darti l'output desiderato.
rmv primo e ultimo

Rimuovi il carattere dalla stringa usando tr

Il comando tr (abbreviazione di translate) viene utilizzato per tradurre, comprimere ed eliminare caratteri da una stringa. Puoi anche usare tr per rimuovere caratteri da una stringa.

A scopo dimostrativo, useremo una stringa di esempio e poi la invieremo al comando tr.

Rimuovi tutte le occorrenze di carattere

Usando il comando tr, puoi rimuovere tutte le occorrenze di caratteri minuscoli o maiuscoli dalla tua stringa. Ad esempio, per rimuovere tutte le occorrenze del carattere minuscolo 'h' dalla stringa, il comando sarebbe:

$buttato fuori 'Ciao, come stai?' | NS -Dh

rimuovi tutte le occorrenze 01

Allo stesso modo, per rimuovere tutte le occorrenze del carattere maiuscolo 'H' dalla stringa, il comando sarebbe:

$buttato fuori 'Ciao, come stai?' | NS -Dh

Puoi anche utilizzare sequenze interpretate per rimuovere lettere minuscole o maiuscole:

$buttato fuori 'Ciao, come stai?'| NS -D [:superiore:]

occorrenze inferiori

$buttato fuori 'Ciao, come stai?'| NS -D [:inferiore:]

occorrenze superiore

Rimuovi tutte le occorrenze di caratteri minuscoli e maiuscoli

Puoi anche rimuovere tutte le occorrenze di caratteri minuscoli e maiuscoli da una stringa. Ad esempio, il seguente comando rimuoverà tutte le occorrenze del carattere 'h', sia minuscole che maiuscole.

$buttato fuori 'Ciao, come stai?' | NS -D'hH'

occorrenze superiore e inferiore

Rimuovi tutte le occorrenze di caratteri in un intervallo specifico

Per rimuovere tutte le occorrenze di caratteri da una stringa nell'intervallo specifico 'd-h', il comando sarebbe:

$buttato fuori 'Ciao, come stai?' | NS -D 'd-h'

Questo comando rimuoverà tutti i caratteri nell'intervallo 'd-h' (d,e,f,g,h) nella stringa.
occorrenze intervallo specifico

Conclusione

In Linux, ci sarà sempre più di un modo per eseguire un lavoro semplice. Lo stesso vale per la rimozione di caratteri da una stringa. Questo articolo ti ha mostrato quattro modi diversi per farlo, insieme ad alcuni esempi per rimuovere caratteri indesiderati da una stringa. Decidere quale strumento utilizzare dipende dalle tue preferenze e, soprattutto, da ciò che vuoi ottenere.