GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie funktionieren die Optionen „-s“, „-t“ und „-c“ des tr-Befehls in Unix?

-s Schalter:Squeeze (wiederholte Zeichen entfernen)

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

Ausgabe:i am a bd bdy

Es gibt zwei Dinge, die hinter den Kulissen passieren, die dies möglich machen. Erstens, wenn das zweite Argument zu tr kürzer ist als das erste dann das letzte Zeichen im 2. arg wird wiederholt, um es auf die gleiche Länge wie das erste zu bringen. Der äquivalente Befehl lautet also:

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

Die andere Sache, die passiert, ist, wenn Zeichen im ersten Argument wiederholt werden, überschreiben sie alle vorherigen Vorkommen (ich beziehe mich auf die beiden oo s in good ). Dadurch entspricht der Befehl jetzt:

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

(die zweite o bis d Ersetzung überschreibt den vorherigen o bis a Ersatz, wodurch es überflüssig wird)

Ohne -s switch wäre die Ausgabe

i am a bddd bdy

Mit dem -s Schalter tr "quetscht" alle wiederholten Zeichen, die im letzten aufgelistet sind Argument, das die endgültige Ausgabe verlässt:

i am a bd bdy

-c Schalter:Komplement

Die -c switch wird verwendet, um das Komplement des ersten Arguments abzugleichen (d. h. alle Zeichen, die nicht in arg 1 aufgeführt sind). Als Ergebnis enthält arg 1 viele Buchstaben (256-3). Nun passiert mit Arg 2 dasselbe wie im vorherigen Fall:Das letzte Zeichen von Arg 2 wird wiederholt, um der Länge von Arg 1 zu entsprechen. Also die ursprüngliche Anweisung:

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

entspricht:

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

(beachten Sie den fehlenden g , o und d Beachten Sie im ersten Satz auch, dass d ersetzt jedes andere Zeichen im zweiten Satz -- einschließlich des Leerzeichens)

Deshalb i am a good boy wird zu dddddddgoodddodd

Weitere Informationen hier:http://www.linuxjournal.com/article/2563


Ihr Verständnis von -s falsch ist, ersetzt es wiederholte Vorkommen von Zeichen in Satz 1 in der Eingabe durch ein einzelnes Zeichen. es verändert den Satz nicht, zB.

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

gibt

i am a bad bay

Die -c Option ersetzt Menge 1 durch ihr Komplement (dh die Menge aller Zeichen, die nicht in Menge 1 enthalten sind). Sie können dies verwenden, um beispielsweise alle außer den angegebenen Zeichen zu entfernen.

echo i am a good boy | tr -cd gobdy

Ausgänge

goodboy

Linux
  1. So erstellen Sie einen Alias ​​und verwenden den Alias-Befehl in Linux

  2. Der Linux-AWK-Befehl – ​​Syntaxbeispiele für Linux und Unix

  3. Der Zweck von .bashrc und wie funktioniert es?

  4. Wie merkt man sich Befehlsoptionen?

  5. Wie funktioniert der Exit-Befehl auf einem Unix-Terminal?

Wie man den Befehl fuser unter Linux verwendet und optimal nutzt

So installieren und verwenden Sie den Exa-Befehl unter Ubuntu 20.04

Was ist Source Command in Linux und wie funktioniert es?

So installieren und verwenden Sie den Bildschirmbefehl Ubuntu 20.04

So installieren und verwenden Sie den Ack-Befehl unter Linux

Linux perf:So verwenden Sie den Befehl und den Profiler