Linux-opdrachten

Linux tr-opdracht

Linux tr-opdracht
In Linux is "tr" een ingebouwd hulpmiddel dat "tekens kan vertalen, persen en/of verwijderen van standaardinvoer, schrijven naar standaarduitvoer" (van man-pagina).

Uit de officiële beschrijving is het gemakkelijk om de waarde van deze tool te begrijpen. Linux komt met een grote verzameling ingebouwde tools. Er zijn enkele speciale die super handig zijn voor tekstmanipulatie. We hebben er al een aantal behandeld, zoals Vim, Nano, awk, sed en andere tools.

Degenen die regelmatig met teksten werken, "tr" zal zeker heel, heel nuttig zijn. Dit artikel illustreert het meest voorkomende gebruik van "tr" met voldoende voorbeelden.

Opmerking: de tutorial gaat een heleboel dummy-bestanden gebruiken met willekeurige inhoud. Alle willekeurige strings worden gegenereerd door Willekeurig.org.

Plaats

welke tr

Dit is het volledige pad van de opdrachttool "tr".

Basisgebruik

Om de tool "tr" te gebruiken, moet u de volgende opdrachtstructuur gebruiken:.

tr [SET1] [SET2]

Er zijn verschillende opties en manieren om de teksten te manipuleren met behulp van "tr". Laten we eerst dit demobestand eens bekijken.

kattendemo.tekst

Alle tekens zijn in kleine letters, rechts? Laten we ze omzetten naar hoofdletters!

kattendemo.txt | tr [:lager:] [:bovenste:]

Hier geeft de eerste parameter van "tr" aan dat er een vertaling moet worden uitgevoerd op alle kleine letters van de invoer. Het tweede deel is veelzeggend om ze bij de uitvoer in hoofdletters te veranderen.

Laten we nu het tegenovergestelde doen.

kattendemo1.tekst

kattendemo1.txt | tr [:bovenste:] [:onder:]

Er is ook een andere manier om dezelfde taak uit te voeren. Laten we het bekijken.

kattendemo.txt | tr [a-z] [A-Z]

Nu, in plaats van "tr" te vertellen om hoofdletters naar kleine letters of kleine letters naar hoofdletters te vertalen, hebben we gevraagd om vermeldingen te identificeren die overeenkomen met het bereik "a" tot "z" en te vertalen naar hun equivalent van het bereik "A" tot "Z".

Deze vergelijkbare methode kan ook worden gebruikt om hoofdletters naar kleine letters te vertalen.

kattendemo1.txt | tr [A-Z] [a-z]

Spelen met cijfers

We hebben gezien hoe je hoofdletters naar kleine letters kunt vertalen, toch?? Het is tijd om met cijfers te spelen.

Met behulp van de volgende opdracht kunnen we alle cijfers (0-9) gemakkelijk in hun equivalente tekens vertalen!

kat demo_digit.tekst

kat demo_digit.txt | tr [0-9] [a-z]

Geweldig! Hoe zit het met hoofdletters?

kat demo_digit.txt | tr [0-9] [A-Z]

Eenvoudig, maar toch interessant, toch? We kunnen ook karakters omzetten in cijfers!

cat demo_lowercase.tekst

cat demo_lowercase.txt | tr [a-z] [0-9]

Uh oh, het lijkt alsof de dingen kapot zijn gegaan, toch?? Welnu, we kunnen alleen 'a' tot 'j' gebruiken om enkele cijfers weer te geven. Als er een teken is dat buiten deze grens valt, zal "tr" het teken vervangen door ']'.

Tekens verwijderen

Zoals de officiële beschrijving suggereert, kan "tr" meer doen dan alleen het vertalen van karakters. In het volgende voorbeeld bekijken we hoe u "tr" kunt gebruiken om bepaalde tekens te verwijderen.

kat willekeurig.tekst

Laten we nu alle nummers uit de inhoud verwijderen.

kat willekeurig.txt | tr -d [0-9]

Hier is de vlag "-d" om "tr" te vertellen om te verwijderen en [0-9] om cijfers aan te geven die moeten worden verwijderd.

Dat kunnen we ook doen met de karakters. De volgende opdracht behoudt alle cijfers maar verwijdert alle tekens.

kat willekeurig.txt | tr -d [a-z]

Wat dacht je van het verwijderen van slechts een enkel specifiek teken uit het bestand??

cat demo_lowercase.tekst

cat demo_lowercase.txt | tr -d 'y'

Het heeft alle 'y'-vermeldingen uit het bestand verwijderd.

Herhaalde tekens inknijpen

Er zijn momenten waarop een teken opeenvolgend wordt herhaald. Als je met zulke vervelende problemen te maken hebt, laat "tr" het dan oplossen! Met het volgende commando kun je zulke gebeurtenissen uitknijpen. Het behoudt in wezen het oorspronkelijke voorkomen van het teken en verwijdert de extra tekens.

Eerst even kijken hoe het demobestand eruitziet.

kat duplicaat.tekst

Geef nu de inhoud door aan "tr".

kat duplicaat.txt | tr -s [:cijfers:]

Hier is de parameter "-s" de indicator voor het uitvoeren van de actie "knijpen".

Zinnen breken/samenvoegen

Laten we het demobestand eens bekijken.

vleermuis duplicaat.tekst

Het bevat een zin met spaties die de woorden verdelen, toch? Laten we de woorden opsplitsen in nieuwe regels.

kat duplicaat.txt | tr " " "\n"

Deze opdracht heeft alle spatietekens vervangen door nieuwe regeltekens.

Laten we de gebroken zin weer samenvoegen tot een lange zin.

vleermuis duplicaat.tekst

kat duplicaat.txt | tr "\n" " "

Tekens vertalen

Net zoals we eerder tekens hebben vertaald, doen we deze keer hetzelfde, maar met slechts één teken.

kattendemo.tekst

Laten we in dit bestand alle tekens van de nieuwe regel veranderen in een puntkomma.

kattendemo.txt | tr "\n" ";"

Ik moest het om "echo" wikkelen. Anders zou het wat uitvoer opleveren omdat het laatste teken van de nieuwe regel ook zou worden vertaald in een puntkomma.

Er is een andere manier om karakters te veranderen. Deze is echter moeilijker te controleren.

kat duplicaat1.tekst

kat duplicaat1.txt | tr -c 'd' 'z'

kat duplicaat1.txt | tr -c 'd' 'z'

Wauw! Laten we het rond "echo" wikkelen om de uitvoer beter te begrijpen.

echo $(kat duplicaat1.txt | tr -c 'd' 'z')

Wat is hier gebeurd? Door de vlag "-c" te gebruiken, houdt "tr" alleen het doelteken ongewijzigd. In het geval van een mismatch, wordt elk ander personage getransformeerd. Hier werd elk ander teken dan 'b' vervangen door 'z'.

Strings vertalen

"tr" kan ook met strings werken. Laten we snaarvervanging uitvoeren.

kat duplicaat1.tekst

kat duplicaat1.txt | tr "duplicaat" "not_duplicate"

Mijn te vervangen string is korter dan de te vervangen string, dus hij paste niet.

Tekensets

Inmiddels heb je gemerkt dat er een aantal tekensets zijn die worden ondersteund door "tr". Hoewel een aantal van hen in de bovenstaande voorbeelden werden gebruikt, zijn andere tekensets ook heel nuttig. Hier is een lijst met alle ondersteunde karakterlijsten.

POSIX-tekensets

  • [:cijfer:] : Cijfers 0-9
  • [:alpha:] : Alfabetten a-z en A-Z.
  • [:alnum:] : Alfanumerieke tekens
  • [:punct:] : Leestekens
  • [:spatie:] : elk witruimteteken, bijvoorbeeld spatie, tab, FF, CR, NL, FF, enz.
  • [:upper:] : Alle hoofdletters
  • [:lower:] : Alle kleine letters
  • [:cntrl:] : Alle controle karakters (NL, CR, EXT, STX, ACK, SO, DC1, DC2, NAK, ETB, ESC, IS1, IS2, DEL etc.)

Extra tekensets

  • [A-Z] : Alle hoofdletters
  • [a-z] : Alle kleine letters
  • [0-9] : Alle cijfers

Laatste gedachten

Er zijn talloze manieren waarop al deze functies van "tr" de gebruikers ten goede kunnen komen. Ik raad altijd aan om alle beschikbare opties en diepgaande handleidingen over elke Linux-tool van hun man-, info- en helppagina's te bekijken, omdat ze meer waardevolle kennis kunnen bieden.

tr --help

man tr

info tr

Genieten!

Beste gamepad-toewijzingsapps voor Linux
Als je graag games op Linux speelt met een gamepad in plaats van een typisch toetsenbord- en muisinvoersysteem, zijn er enkele handige apps voor jou. ...
Handige hulpmiddelen voor Linux-gamers
Als je graag games op Linux speelt, is de kans groot dat je apps en hulpprogramma's zoals Wine, Lutris en OBS Studio hebt gebruikt om de game-ervaring...
HD Remastered Games voor Linux die nog nooit eerder een Linux-release hebben gehad
Veel game-ontwikkelaars en uitgevers komen met HD-remaster van oude games om de levensduur van franchise te verlengen, fans die compatibiliteit met mo...