Android

Tr-opdracht in linux met voorbeelden

Linux Tutorials | tr command | GeeksforGeeks

Linux Tutorials | tr command | GeeksforGeeks

Inhoudsopgave:

Anonim

tr is een opdrachtregelhulpprogramma in Linux- en Unix-systemen dat tekens uit de standaardinvoer vertaalt, verwijdert en knijpt en het resultaat naar de standaarduitvoer schrijft.

De opdracht tr kan bewerkingen uitvoeren zoals het verwijderen van herhaalde tekens, het omzetten van hoofdletters in kleine letters en het vervangen en verwijderen van standaardtekens. Meestal wordt het gebruikt in combinatie met andere opdrachten via leidingen.

In deze zelfstudie laten we u zien hoe u het tr commando kunt gebruiken door praktische voorbeelden en gedetailleerde uitleg van de meest voorkomende opties.

Hoe het tr commando te gebruiken

De syntaxis voor de opdracht tr is als volgt:

tr OPTION… SET1

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

Een SET is eigenlijk een reeks tekens, inclusief de speciale backslash-ontsnapte tekens.

In het volgende voorbeeld vervangt tr alle tekens van de standaardinvoer (linuxize) door de tekens uit de eerste set toe te wijzen aan de overeenkomende tekens uit de tweede set.

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

Elk voorkomen van l wordt vervangen door r , i door e en n door d :

reduxeze

De tekensets kunnen ook worden gedefinieerd met behulp van tekenbereiken. Bijvoorbeeld in plaats van te schrijven:

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

je kunt gebruiken:

echo 'linuxize' | tr 'ln' 'w-z'

Wanneer de optie -c ( --complement ) wordt gebruikt, vervangt tr alle tekens die zich niet in SET1 bevinden.

In het onderstaande voorbeeld worden alle tekens behalve "li" vervangen door het laatste teken uit de tweede set:

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

liyyyiyyy

Zoals je misschien hebt gemerkt, heeft de bovenstaande output een meer zichtbaar karakter dan de input. Dit komt omdat het echo commando een onzichtbaar newline-teken print dat ook wordt vervangen door y . Gebruik de optie -n om een ​​string zonder een nieuwe regel te echoën.

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

Met de onderstaande opdracht worden de tekens l , i en z :

echo 'Linuxize' | tr -d 'liz'

Het L teken wordt niet verwijderd omdat de invoer een hoofdletter L terwijl het l teken in de SET kleine letters is.

Lnuxe

De optie -s ( --squeeze-repeats ) vervangt een reeks herhaalde gebeurtenissen door de tekenset in de laatste SET.

In het volgende voorbeeld verwijdert tr de herhaalde spaties:

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

GNU \ Linux

Wanneer SET2 wordt gebruikt, wordt de reeks van het teken dat is opgegeven in SET1 vervangen door SET2.

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

GNU_\_Linux

De optie -t ( --truncate-set1 ) dwingt tr om --truncate-set1 tot de lengte van SET2 voordat verdere verwerking wordt uitgevoerd.

Als SET1 groter is dan SET2 tr wordt het laatste teken van SET2 standaard opnieuw gebruikt. Hier is een voorbeeld:

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

De uitvoer laat zien dat het karakter e van SET1 overeenkomt met het laatste karakter van SET2, wat 2 :

Linux iz2

Gebruik nu dezelfde opdracht met de optie -t :

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

Linux ize

U kunt zien dat de laatste drie tekens van de SET1 zijn verwijderd. SET1 wordt 'ab', dezelfde lengte als SET2 en er wordt geen vervanging gemaakt.

Opties combineren

Met de opdracht tr kunt u ook de opties combineren. De volgende opdracht vervangt bijvoorbeeld eerst alle tekens behalve i door 0 en knijpt vervolgens de herhaalde 0 tekens:

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

0i0i0

Tr Command-voorbeelden

In deze sectie behandelen we een paar voorbeelden van veelvoorkomende toepassingen van de opdracht tr .

Kleine letters omzetten in hoofdletters

Het omzetten van kleine letters in hoofdletters of omgekeerd is een van de typische gebruiksgevallen van de opdracht tr . 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 'az' 'A-Z'

Om hoofdletters naar kleine letters om te zetten, schakelt u eenvoudig de plaatsen van de sets om.

Verwijder alle niet-numerieke tekens

Met de volgende opdracht worden alle niet-numerieke tekens verwijderd:

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

staat voor alle tekens en met de optie -c verwijdert de opdracht alle niet-tekens. De uitvoer ziet er zo uit:

1234567890

Zet elk woord op een nieuwe regel

Om elk woord op een nieuwe regel te plaatsen, moeten we alle niet-alfanumerieke tekens matchen en ze vervangen door een nieuwe regel:

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

GNU is an operating system

Verwijder lege regels

Om de lege regels te verwijderen, drukt u eenvoudig op de herhaalde tekens van de nieuwe regel:

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

In de bovenstaande opdracht gebruiken we het omleidingssymbool < om de inhoud van het file.txt te file.txt aan de opdracht tr . De omleiding > schrijft de uitvoer van de opdracht naar new_file.txt .

Druk $PATH mappen af ​​op een afzonderlijke regel

De omgevingsvariabele $PATH is een door dubbele punten gescheiden lijst met mappen die de shell vertelt welke mappen moeten worden gezocht naar uitvoerbare bestanden wanneer u een opdracht typt.

Om elke map op een afzonderlijke regel af te drukken, moeten we de dubbele punt (:) matchen 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 opdracht voor het vertalen of verwijderen van tekens.

Hoewel zeer nuttig, kan tr alleen met enkele tekens werken. Voor complexere patroonafstemming en stringmanipulatie moet u sed of awk .

tr terminal