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 .