OnWorks Linux ve Windows Çevrimiçi İş İstasyonları

Logo

İş İstasyonları için Çevrimiçi Ücretsiz Barındırma

<Önceki | İçerik | Sonraki>

tr

The tr program için kullanılır başka dilde yazmak karakterler. Bunu bir nevi karakter bazlı ara-değiştir işlemi olarak düşünebiliriz. Harf çevirisi, karakterleri bir alfabeden diğerine değiştirme işlemidir. Örneğin, karakterleri küçük harften büyük harfe dönüştürmek harf çevirisidir. Böyle bir dönüşümü şu şekilde gerçekleştirebiliriz: tr aşağıdaki gibidir:


[ben@linuxbox ~]$ echo "küçük harfler" | tr az AZ

KÜÇÜK HARFLER

[ben@linuxbox ~]$ echo "küçük harfler" | tr az AZ

KÜÇÜK HARFLER


Gördüğümüz gibi, tr standart girdiyle çalışır ve sonuçlarını standart çıktıya verir. tr iki argüman kabul eder: dönüştürülecek karakter kümesi ve dönüştürülecek karşılık gelen karakter kümesi. Karakter kümeleri üç yoldan biriyle ifade edilebilir:

1. Numaralandırılmış bir liste. Örneğin, ABCDEFGHIJKLMNOPQRSTUVWXYZ

2. Bir karakter aralığı. Örneğin, AZ. Yerel ayar sıralaması nedeniyle bu yöntemin bazen diğer komutlarla aynı sorunlara maruz kalabileceğini ve bu nedenle dikkatli kullanılması gerektiğini unutmayın.

3. POSIX karakter sınıfları. Örneğin, [:üst:].

Çoğu durumda her iki karakter kümesi de eşit uzunlukta olmalıdır; ancak, özellikle birden fazla karakteri tek bir karaktere dönüştürmek istiyorsak, ilk kümenin ikinciden daha büyük olması mümkündür:



[ben@linuxbox ~]$ echo "küçük harfler" | tr [:alt:] A

AAAAAAAAAAAAAAA

[ben@linuxbox ~]$ echo "küçük harfler" | tr [:alt:] A

AAAAAAAAAAAAAAA


Harf çevirisinin yanı sıra, tr karakterlerin giriş akışından kolayca silinmesine olanak tanır. Bu bölümün başlarında MS-DOS metin dosyalarını Unix tarzı metne dönüştürme sorununu tartıştık. Bu dönüşümü gerçekleştirmek için satırbaşı karakterlerinin her satırın sonundan kaldırılması gerekir. Bu ile gerçekleştirilebilir tr aşağıdaki gibidir:

tr -d '\r' dos_file > unix_dosyası


nerede dos_file dönüştürülecek dosyadır ve unix_dosyası sonuç budur. Komutun bu biçimi kaçış dizisini kullanır \r satırbaşı karakterini temsil etmek için. Dizilerin ve karakter sınıflarının tam listesini görmek için tr destekliyorsa şunu deneyin:


[ben@linuxbox ~]$ tr --yardım

[ben@linuxbox ~]$ tr --yardım


görüntü

ROT13: O Kadar da Gizli Olmayan Şifre Çözücü Halkası

Eğlenceli bir kullanım tr gerçekleştirmek ROT13 kodlaması metin. ROT13, basit bir ikame şifresine dayanan önemsiz bir şifreleme türüdür. ROT13'ü “şifreleme” olarak adlandırmak cömertliktir; "Metin gizleme" daha doğrudur. Bazen metin üzerinde potansiyel olarak rahatsız edici içeriği gizlemek için kullanılır. Yöntem basitçe her karakteri alfabede 13 basamak yukarı taşır. Bu, olası 26 karakterin yarısı kadar olduğundan, algoritmanın metin üzerinde ikinci kez uygulanması metni orijinal biçimine geri yükler. Bu kodlamayı gerçekleştirmek için tr:

echo "gizli metin" | tr a-zA-Z n-za-mN-ZA-M

frperg grkg

Aynı prosedürün ikinci kez uygulanması çeviriyle sonuçlanır:

echo "frperg grkg" | tr a-zA-Z n-za-mN-ZA-M

gizli metin

Bir dizi e-posta programı ve Usenet haber okuyucusu ROT13 kodlamasını destekler. Vikipedi'de konuyla ilgili güzel bir makale var:

http://en.wikipedia.org/wiki/ROT13


tr başka bir numara daha yapabilir. -s seçeneğini kullanarak tr, bir karakterin tekrarlanan örneklerini “sıkıştırabilir” (silebilir):



[ben@linuxbox ~]$ yankı "aaabbcccc" | tr -s ab

abccc

[ben@linuxbox ~]$ yankı "aaabbcccc" | tr -s ab

abccc


Burada tekrarlanan karakterleri içeren bir dizemiz var. “ab” setini belirterek tr, kümedeki harflerin tekrarlanan örneklerini ortadan kaldırırken kümede eksik olan karakteri (“c”) değiştirmeden bırakırız. Tekrarlanan karakterlerin bitişik olması gerektiğini unutmayın. Değillerse:


[ben@linuxbox ~]$ echo "abcabcabc" | tr -s ab

abcabcabc

[ben@linuxbox ~]$ echo "abcabcabc" | tr -s ab

abcabcabc


sıkmanın hiçbir etkisi olmayacaktır.


OnWorks'te En İyi OS Bulut Bilişimi: