Linux tr Komutu Nasıl Kullanılır?
Yayınlanan: 2023-05-17Linux'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.
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'
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'
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'
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'
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]'
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]'
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:]'
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' '-'
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' '-'
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'
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:]'
[: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:]'
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:]'
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:]'
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'
Rakamları da kolayca silebiliriz.
yankı abcd123efg | tr -d '[:digit:]'
-c
(tamamla) ve -d
(sil) seçeneklerini birleştirerek rakamlar dışındaki her şeyi silebiliriz.
yankı abcd123efg | tr -cd '[:digit:]'
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'
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' ' ':'
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"
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' ' '
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:]'
İ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.
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.