tr is een command-line utility in Linux en Unix systemen die karakters vertaalt, verwijdert en knijpt uit de standaard invoer en schrijft het resultaat naar de standaard uitvoer.

het tr commando kan bewerkingen uitvoeren zoals het verwijderen van herhaalde karakters, het converteren van hoofdletters naar kleine letters en het vervangen en verwijderen van basic characters. Typisch, het wordt gebruikt in combinatie met andere commando ‘ s door middel van leidingen.,

In deze tutorial laten we u zien hoe u het tr commando gebruikt door middel van praktische voorbeelden en gedetailleerde uitleg van de meest voorkomende opties.

het gebruik van de TR-opdracht #

de syntaxis voor de opdracht tr is als volgt:

tr OPTION... SET1 

tr accepteert twee reeksen tekens, meestal met dezelfde lengte, en vervangt de karakters van de eerste sets met de overeenkomstige karakters van de tweede set.,

A SET is in principe een tekenreeks, inclusief de speciale Backslash-escaped karakters.

in het volgende voorbeeld zal tr alle tekens uit de standaardinvoer (linuxize) vervangen door de tekens uit de eerste set te koppelen aan de overeenkomende tekens uit de tweede set.,

echo 'linuxize' | tr 'lin' 'red'

Elk exemplaar van l is vervangen door r, i met e, en n met d:

reduxeze

Het karakter sets kunnen ook worden gedefinieerd met behulp van tekenreeksen., Bijvoorbeeld, in plaats van het schrijven van:

echo 'linuxize' | tr 'lmno' 'wxyz'

kunt u gebruik maken van:

echo 'linuxize' | tr 'l-n' 'w-z'

wanneer -c (--complement) optie wordt gebruikt, tr vervangt alle tekens die niet in Set1 staan.

in het voorbeeld hieronder worden alle karakters behalve “li” vervangen door het laatste teken uit de tweede set:

echo 'linuxize' | tr -c 'li' 'xy'
liyyyiyyy

zoals u wellicht hebt gemerkt, heeft de uitvoer hierboven een duidelijker teken dan de invoer., Dit komt omdat het commando echo een onzichtbaar nieuwregelteken afdrukt \n dat ook wordt vervangen door y. Gebruik de optie -n om een tekenreeks zonder een nieuwe regel weer te geven.

de -d (--delete) optie vertelt tr om tekens te verwijderen die zijn opgegeven in SET1. Wanneer u tekens verwijdert zonder te knijpen, geeft u slechts één set op.,

Het commando hieronder zal verwijderen l, i en z tekens:

echo 'Linuxize' | tr -d 'liz'

De L teken is niet verwijderd omdat de ingang bevat een hoofdletter L terwijl l teken in de SET is in kleine letters.

Lnuxe

de -s (--squeeze-repeats) optie vervangt een reeks van herhaalde keren met de tekenset in de laatste SET.,

in het volgende voorbeeld verwijdert tr de herhaalde spatiekarakters:

echo "GNU \ Linux" | tr -s ' '
GNU \ Linux

wanneer SET2 wordt gebruikt, wordt de reeks van het in SET1 opgegeven teken vervangen door SET2.

echo "GNU \ Linux" | tr -s ' ' '_'
GNU_\_Linux

de -t (--truncate-set1) optie forces tr om SET1 af te knippen tot de lengte van set2 voor verdere verwerking.,

standaard zal als SET1 groter is dan SET2 tr Het Laatste teken van SET2 hergebruiken. Hier is een voorbeeld:

echo 'Linux ize' | tr 'abcde' '12'

De output laat zien dat het karakter e van SET1 is vergeleken met de meest recente karakter van SET2, dat is 2:

Linux iz2

Nu, gebruik het commando uitvoeren met de -t optie:

echo 'Linux ize' | tr -t 'abcde' '12'
Linux ize

U kan zien dat de laatste drie tekens van de SET1 worden verwijderd., SET1 wordt ‘ab’, dezelfde lengte als SET2, en er wordt geen vervanging gemaakt.

Combining options #

met het commando tr kunt u ook de opties combineren. Het volgende commando vervangt bijvoorbeeld eerst alle karakters behalve i door 0 en drukt vervolgens de herhaalde 0 karakters:

echo 'Linux ize' | tr -cs 'i' '0'
0i0i0

TR Commando voorbeelden #

in deze sectie zullen we een paar voorbeelden behandelen van veelvoorkomende toepassingen van het tr Commando.,

kleine letters omzetten naar hoofdletters #

kleine letters omzetten naar hoofdletters of omgekeerd is een van de typische use cases van het tr Commando. komt overeen met alle kleine letters en komt overeen met alle hoofdletters.

echo 'Linuxize' | tr '' ''
LINUXIZE

in plaats van tekenklassen kunt u ook bereiken gebruiken:

echo 'Linuxize' | tr 'a-z' 'A-Z'

om hoofdletters naar kleine letters te converteren, kunt u eenvoudig de plaatsen van de sets wisselen.,

Verwijder alle niet-numerieke tekens #

het volgende commando verwijdert alle niet-numerieke tekens:

echo "my phone is 123-456-7890" | tr -cd 

staat voor alle cijfertekens, en door gebruik te maken van de optie -c verwijdert het commando alle niet-cijferige tekens.,zal er als volgt uitzien:

1234567890

Zet elk woord op een nieuwe regel #

Om elk woord op een nieuwe regel, moeten we met alle niet-alfanumerieke tekens en vervang deze met een nieuwe regel:

echo 'GNU is an operating system' | tr -cs '' '\n'
GNUisanoperatingsystem

lege regels Verwijderen #

Om het verwijderen van de lege regels knijpt de repetitieve newline-characters:

tr -s '\n' < file.txt > new_file.txt

In het bovenstaande commando maken we gebruik van de omleiding symbool < om te geven van de inhoud van de file.txt om het tr commando., De omleiding > schrijft de uitvoer van het commando naar new_file.txt.

$PATH mappen op een aparte regel #

De$PATH omgevingsvariabele is een dubbele punt gescheiden lijst van mappen die de shell vertelt welke mappen naar uitvoerbare bestanden moeten zoeken wanneer u een opdracht typt.,

om elke map op een aparte regel af te drukken moeten we overeenkomen met de dubbele punt (:) en deze vervangen door de nieuwe regel:

echo $PATH | tr ':' '\n'
/usr/local/sbin/usr/local/bin/usr/sbin/usr/bin/sbin/bin

conclusie #

tr is een commando Voor het vertalen of verwijderen van tekens.

hoewel zeer nuttig, tr kan alleen werken met enkele tekens. Voor meer complexe pattern matching en string manipulatie, moet u sed of awk gebruiken .

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *