GNU/Linux >> Linux Esercitazione >  >> Linux

Come funzionano le opzioni '-s', '-t' e '-c' del comando tr in Unix?

-s Switch:Squeeze (rimuovi i caratteri ripetuti)

echo i am a good boy | tr -s good bad

output:i am a bd bdy

Ci sono due cose che accadono dietro le quinte che lo fanno accadere. In primo luogo, se il secondo argomento di tr è più breve del primo e dell'ultimo carattere nel 2° argomento si ripete per renderlo della stessa lunghezza del primo. Quindi il comando equivalente è:

echo i am a good boy | tr -s good badd

L'altra cosa che accade è che quando i caratteri nel primo argomento vengono ripetuti sovrascrivono qualsiasi occorrenza precedente (mi riferisco ai due oo s in good ). Questo rende il comando ora equivalente a:

echo i am a good boy | tr -s god bdd

(il secondo o a d la sostituzione sovrascrive il precedente o a a sostituzione, rendendolo ridondante)

Senza il -s switch l'output sarebbe

i am a bddd bdy

Con il -s cambia tr "comprime" tutti i caratteri ripetuti elencati nell'ultimo argomento lasciando l'output finale:

i am a bd bdy

-c Cambio:Complemento

Il -c switch viene utilizzato per abbinare il complemento del primo argomento (ovvero tutti i caratteri non elencati in arg 1). Di conseguenza, arg 1 conterrà molte lettere (256-3). Ora, la stessa cosa accade ad arg 2 come nel caso precedente:il carattere finale di Arg 2 viene ripetuto per corrispondere alla lunghezza o ad Arg 1. Quindi l'istruzione originale:

echo i am a good boy | tr -c good bad

è equivalente a:

echo i am a good boy | tr abcefhijklmnp... baddddddddddd...

(notare il g mancante , o e d nel primo insieme, nota anche che d sostituirà ogni altro carattere nel secondo set -- incluso il carattere spazio)

Ecco perché i am a good boy diventa dddddddgoodddodd

Maggiori informazioni qui:http://www.linuxjournal.com/article/2563


La tua comprensione di -s non è corretto, sostituisce le occorrenze ripetute di caratteri nel set 1 nell'input con un singolo carattere. non modifica l'insieme, es.

echo i am a good boy | tr -s god bad

i am a bad bay

Il -c option sostituisce l'insieme 1 con il suo complemento (cioè l'insieme di tutti i caratteri non contenuti nell'insieme 1). Puoi usarlo per rimuovere tutto tranne i caratteri specificati, ad esempio.

echo i am a good boy | tr -cd gobdy

uscite

goodboy

Linux
  1. Come creare un alias e utilizzare il comando alias in Linux

  2. Il comando AWK di Linux:esempi di sintassi di utilizzo di Linux e Unix

  3. Come utilizzare il comando basename?

  4. Spiega le opzioni del comando Readlink?

  5. Come comprimere ed estrarre file usando il comando tar su Linux?

Come usare e sfruttare al meglio il comando fusore in Linux

Come installare e utilizzare il comando Exa su Ubuntu 20.04

Che cos'è il comando sorgente in Linux e come funziona?

Come installare e utilizzare il comando dello schermo Ubuntu 20.04

Come installare e utilizzare il comando Ack in Linux

Linux perf:come utilizzare il comando e il profiler