Linux tr Komutu Nasıl Kullanılır?

Yayınlanan: 2023-05-17
Bir dizüstü bilgisayarda Ubuntu Linux başlangıç ​​ekranı
Jordan Gloor / Nasıl Yapılır Geek
tr komutu, çıktı olarak yeni bir akış oluşturarak bir metin akışı üzerinde dönüşümler gerçekleştirir. Komut satırında belirlediğiniz kurallara göre karakterleri değiştirebilir, silebilir veya dönüştürebilirsiniz.

Linux'ta bir metin akışını değiştirmek için gösterişsiz bir yönteme mi ihtiyacınız var? Girilen metni değiştirirken, kaldırırken, birleştirirken ve sıkıştırırken size zaman kazandırabilecek tr komutundan başka bir yere bakmayın. Bu şekilde yapılır.

İçindekiler

tr Komutu Nedir?
Karakterleri Değiştirme
Aralıkları ve Belirteçleri Kullanma
Eşleşmeleri Ters Çevirmek
Karakterleri Silme ve Sıkıştırma
Karakterleri Silme
Çizgileri Birleştirme ve Ayırma
Borularla tr Kullanma
Basit olduğu kadar basit

tr Komutu Nedir?

Linux tr komutu, istenmeyen karakterleri metin akışlarından ayıklamak ve diğer düzgün manipülasyon hileleri için hızlı ve basit bir yardımcı programdır. Adını “translate” kelimesinden alır ve tr kökleri Unix geleneğinde derinlere uzanır.

Hepimizin bildiği gibi Linux, Unix'in açık kaynaklı bir yeniden yazımıdır. Karışıma kendi malzemelerini de katıyor. Bayt bayt bir klon değildir, ancak tasarım ilkelerinin ve mühendislik yönetiminin çoğunu Unix işletim sisteminden aldığı açıktır.

Şimdiye kadar yalnızca iki Linux dağıtımının POSIX uyumlu olduğu onaylanmış ve resmi olarak Unix'in uygulamaları olarak kabul edildikleri onaylanmıştır—EulerOS ve Inspur K-UX—Linux, iş dünyasında neredeyse tamamen Unix'in yerini almıştır.

Tüm Linux dağıtımları, en azından temel hizmetlerinde, Unix felsefesine bağlıdır. Unix felsefesi, Unix öncülerinin yeni işletim sistemleri için sahip oldukları vizyonu özetlemektedir. Genellikle "Bir şeyi iyi yapan programlar yazın" şeklinde yorumlanır. Ama bundan daha fazlası var.

En güçlü yeniliklerden biri, programların diğer programlara girdi olarak kullanılabilecek çıktılar üretmesi gerektiğiydi. Bir programdan gelen çıktı akışını sıradaki bir sonraki programa giriş akışı olarak kullanarak, komut satırı yardımcı programlarını birlikte zincirleme bağlama yeteneği son derece güçlüdür.

Bazen, sıradaki bir sonraki programa ulaşmadan önce bir programın çıktısında ince ayar yapmak veya ince ayar yapmak isteyebilirsiniz. Ya da belki girdilerinizi bir Linux komut satırı aracından almıyorsunuz, özel ihtiyaçlarınız göz önünde bulundurularak oluşturulmamış bir dosyadan metin akışı yapıyorsunuz.

Burası tr kendine geldiği yer. Çıkış akışını üretmek için giriş akışında bir dizi basit dönüşüm gerçekleştirmenize izin verir. Bu çıktı akışı bir dosyaya yeniden yönlendirilebilir, başka bir Linux programına ve hatta akışa birden çok dönüşümün uygulanması için başka bir tr örneğine beslenebilir.

Karakterleri Değiştirme

tr komutu, giriş akışında kurallara göre çalışır. Herhangi bir komut satırı seçeneği olmadan kullanıldığında, tr varsayılan eylemi, giriş akışındaki karakterleri diğer karakterlerle değiştirmektir.

tr komutları genellikle iki karakter kümesi gerektirir. İlk set, giriş akışında bulunursa değiştirilecek karakterleri tutar. İkinci set, değiştirilecekleri karakterleri tutar.

Bunun çalışma şekli, birinci setteki ilk karakterin tekrarı, ikinci setteki ilk karakterle değiştirilecektir. Birinci kümedeki ikinci karakterin tekrarı, ikinci kümedeki ikinci karakterle değiştirilir ve bu böyle devam eder.

Bu örnek, tr giriş akışında "c" harfini arayacak ve her geçtiği yeri "z" harfiyle değiştirecektir. tr büyük/küçük harfe duyarlı olduğunu unutmayın.

Bir metni tr içine itmek için echo kullanıyoruz.

 yankı abcdefabc | tr 'c' 'z' 

Tek bir karakteri tr ile değiştirmek

Tüm "c" oluşumları "z" ile değiştirilir ve yeni dizi terminal penceresine yazılır.

Bu kez “a” ve “c” olmak üzere iki harf arayacağız. "ac" aramadığımıza dikkat edin. "a"yı arıyoruz, sonra "c"yi arıyoruz. Herhangi bir "a" kelimesini "x" ile ve "c" kelimesini "z" ile değiştireceğiz.

 yankı abcdefabc | tr 'ac' 'xz' 

tr ile iki harfi silme

Bunun çalışması için her iki sette de aynı sayıda karaktere sahip olmanız gerekir. Bunu yapmazsanız, öngörülebilir, ancak muhtemelen istenmeyen davranışlarla karşılaşacaksınız.

 yankı 'bana İsmail de.' | tr 'abcdjklm' '123' 

tr ile dengesiz karakter kümeleri kullanma

Birinci sette ikinci settekinden daha fazla karakter var. “d” ila “m” harflerinin ikinci sette karşılık gelen karakteri yoktur. Yine de değiştirilecekler ama hepsi ikinci setteki son karakterle değiştirilecek.

Bunun bazı durumlarda yararlı olması hemen hemen olasıdır, ancak bunu önlemek istiyorsanız -t (kes) seçeneğini kullanabilirsiniz. Bu, yalnızca birinci kümede yer alan ve ikinci kümede eşleşen bir karaktere sahip karakterleri değiştirir.

 yankı 'bana İsmail de.' | tr -t 'abcdjklm' '123' 

truncate seçeneğiyle dengesiz karakter kümelerini kullanma

Aralıkları ve Belirteçleri Kullanma

Set one ve set two karakter aralıkları içerebilir. Örneğin, [az] tüm küçük harfleri ve [AZ] tüm büyük harfleri temsil eder. Bunu bir metin akışının durumunu değiştirmek için kullanabiliriz.

Bu, giriş akışını büyük harfe dönüştürür.

 echo "Nasıl Yapılır Geek" | tr '[az]' '[AZ]' 

Bir dizeyi büyük harfe dönüştürmek için karakter aralıklarını kullanma

Durumu diğer yöne çevirmek için aynı komutu kullanabiliriz ancak komut satırında büyük ve küçük harf aralıkları değiştirilir.

 echo "Nasıl Yapılır Geek" | tr '[AZ]' '[az]' 

Bir dizeyi küçük harfe dönüştürmek için karakter aralıklarını kullanma

Eşleştirmek isteyebileceğimiz bazı yaygın durumlar için kullanabileceğimiz belirteçler var.

  • [:alnum:] : Harfler ve rakamlar.
  • [:alpha:] : Yalnızca harfler.
  • [:digit:] : Yalnızca basamaklar.
  • [:blank:] : Sekmeler ve boşluklar.
  • [:space:] : Yeni satır karakterleri dahil tüm boşluklar.
  • [:graph:] : Semboller dahil tüm karakterler, ancak boşluklar hariç.
  • [:print:] : Boşluklar dahil olmak üzere semboller dahil tüm karakterler.
  • [:punk:] : Tüm noktalama işaretleri.
  • [:alt:] : Küçük harfler.
  • [:upper:] : Büyük harfler.

Belirteçleri kullanarak küçük harften büyük harfe ve büyük harften küçük harfe dönüştürmelerimizi aynı kolaylıkla gerçekleştirebiliriz.

 echo "Nasıl Yapılır Geek" | tr '[:alt:]' '[:üst:]'
 echo "Nasıl Yapılır Geek" | tr '[:üst:]' '[:alt:]' 

Metin dizelerinin durumunu değiştirmek için belirteçleri kullanma

Eşleşmeleri Ters Çevirmek

-c (tamamlayıcı) seçeneği, ilk kümedekiler dışındaki tüm karakterlerle eşleşir. Bu komut “c” harfi dışındaki her şeyi kısa çizgiye ” - “ dönüştürür.

 yankı abcdefc | tr -c 'c' '-' 

Belirtilen karakterler dışındaki tüm karakterleri diğer karakterlerle değiştirme

Bu komut ilk kümeye "a" harfini ekler. “a” veya “c” dışındaki her şey kısa çizgi ” - ” karakterine dönüştürülür.

 yankı abcdefc | tr -c 'ac' '-' 

Belirtilen birden çok karakter dışındaki tüm karakterleri diğer karakterlerle değiştirme

Karakterleri Silme ve Sıkıştırma

Karakterleri değiştirmeden tamamen kaldırmak için tr kullanabiliriz.

Bu komut, giriş akışından herhangi bir "a", "d" veya "f" oluşumunu kaldırmak için -d (sil) seçeneğini kullanır.

 yankı abcdefc | tr -d 'adf' 

tr ile bir metin dizisinden birden fazla karakter silme

Bu, komut satırında iki değil, yalnızca bir karakter setimizin olduğu bir örnektir.

Bir diğeri, -s (sıkıştır-tekrarlar) seçeneğini kullandığımız zamandır. Bu seçenek, tekrarlanan karakterleri tek bir karaktere indirger.

Bu örnek, boşluk karakterinin tekrarlanan dizilerini tek bir boşluğa indirecektir.

 yankı "abc de fc" | tr -s '[:blank:]' 

tr ile tekrarlanan karakter dizilerini karakterin tek bir oluşumuna değiştirme

[:blank:] belirtecinin boşluk karakterini ve [:space:] belirtecinin sekmeler ve yeni satır karakterleri dahil tüm boşluk biçimlerini temsil etmesi biraz kafa karıştırıcıdır.

Bu durumda, [:blank:] [:space:] ile değiştirebilir ve aynı sonucu elde edebiliriz.

 yankı "abc de fc" | tr -s '[:boşluk:]' 

tr ile tekrarlanan karakter dizilerini karakterin tek bir oluşumuna değiştirme

Karakterleri Silme

[:blank:] ve [:space:] arasındaki farklar, karakterleri sildiğimizde belirginleşir. Bunu yapmak için, -d (sil) seçeneğini kullanırız ve tr giriş akışında arayacağı bir dizi karakter sağlarız. Bulduğu her şey kaldırılır.

 yankı "abc de fc" | tr -d '[:blank:]' 

tr ile bir metin dizisinden boşlukları (boşluk karakterleri) silme

Boşluklar silinir. Çıkış akışı terminal penceresine yazıldıktan sonra yeni bir satır aldığımızı unutmayın. Bu komutu tekrarlar ve boşluk yerine [:space:] kullanırsak farklı bir sonuç alırız.

 yankı "abc de fc" | tr -d '[:blank:]' 

tr ile bir metin dizisinden boşluk silme

Bu sefer çıktıdan sonra yeni bir satır başlatmıyoruz, komut istemi tam onun karşısına çıkıyor. Bunun nedeni [:space:] öğesinin yeni satırlar içermesidir. Boşluklar, sekmeler ve yeni satır karakterleri giriş akışından kaldırılır.

Elbette gerçek bir boşluk karakteri de kullanabilirsiniz.

 yankı "abc de fc" | tr -d' 

tr ile bir boşluk karakteri belirterek bir metin dizisinden boşlukları silme

Rakamları da kolayca silebiliriz.

 yankı abcd123efg | tr -d '[:digit:]' 

tr ile bir metin dizisinden basamak silme

-c (tamamla) ve -d (sil) seçeneklerini birleştirerek rakamlar dışındaki her şeyi silebiliriz.

 yankı abcd123efg | tr -cd '[:digit:]' 

tr kullanarak bir metin dizisinden rakamlar dışındaki her şeyi silme

Rakamlar dışındaki her şeyin tüm harfleri ve tüm boşlukları ifade ettiğini unutmayın, bu nedenle bir kez daha son satırı kaybederiz.

Çizgileri Birleştirme ve Ayırma

Boşlukların yerine yeni satır karakterlerini koyarsak, bir metin satırını bölebilir ve her kelimeyi kendi satırına yerleştirebiliriz.

 yankı 'bir iki üç dört' | tr ' ' '\n' 

Bir metin satırını tr ile satır başına bir kelimeye bölme

Kelimeleri ayıran sınırlayıcıyı da değiştirebiliriz. Bu komut, boşlukların yerine iki nokta üst üste ” : ” koyar.

 yankı 'bir iki üç dört' | tr' ' ':' 

tr ile kelime sınırlayıcıyı boşluklardan iki nokta üst üste değiştirme

Ayırıcının kullanımda olduğunu bulabilir ve onu yeni satır karakterleriyle değiştirerek okunması zor metni yönetimi daha kolay çıktılara ayırabiliriz.

Yol ortam değişkeni, birçok dizin yolundan oluşan uzun bir dizedir. İki nokta üst üste ” : ” her yolu ayırır. Onları yeni satır karakterleriyle değiştireceğiz.

 yankı $PATH
 yankı $PATH | tr ":" "\n" 

$PATH ortam değişkenini, tr ile her satıra bir tane olmak üzere ayrı dizin yollarına bölme

Görsel olarak ayrıştırmak çok daha kolay.

Tek bir satıra yeniden biçimlendirmek istediğimiz çıktımız varsa, onu da yapabiliriz. “lines.txt” dosyası, her satırında bir sözcük bulunan bazı metinler içerir. Bunu tr besleyeceğiz ve tek bir satıra dönüştüreceğiz.

 kedi dosyaları.txt
 kedi hatları.txt | tr '\n' ' ' 

tr kullanarak çok satırlı girişi tek bir metin satırında birleştirme

Borularla tr Kullanma

tr çıktısını başka bir programın girdisi olarak, hatta tr kendisi için kullanabiliriz.

Bu komut, tr dört kez kullanır.

  • İlk tr girişteki tüm kısa çizgileri “-” siler.
  • İkinci tr tekrarlanan boşlukları tek boşluklara sıkıştırır.
  • Üçüncü tr boşlukları alt çizgi "_" karakterleriyle değiştirir.
  • Dördüncü ve son tr dizeyi küçük harfe dönüştürür.
 echo "Karıştırılmış Dosya-nAMe.txt" | tr -d '-' | tr -s ' ' | tr' ' '_' | tr '[:üst:]' '[:alt:]' 

Dört tr örneğinden oluşan bir ardışık düzen

İLGİLİ: Linux'ta Borular Nasıl Kullanılır

Basit olduğu kadar basit

tr komutu harika çünkü basit. Öğrenecek ve hatırlayacak çok şey yok. Ancak basitliği de onun çöküşü olabilir.

Hata yapmayın, sık sık tr sed gibi daha karmaşık araçlara ulaşmak zorunda kalmadan ihtiyacınız olanı yapmanıza izin verdiğini göreceksiniz.

Linux'ta sed Komutu Nasıl Kullanılır?
İLGİLİ Linux'ta sed Komutu Nasıl Kullanılır?

Bununla birlikte, tr ile bir şey yapmakta zorlanıyorsanız ve kendinizi uzun papatya komut zincirleri oluştururken bulursanız, muhtemelen sed kullanmanız gerekir.