man/text
man · Metin İşleme

$ tr

Bölüm 1 · Metin İşleme

karakterleri dönüştürür

Özet

tr [-Ccsu] dize1 dize2
tr [-Ccu] -d dize1
tr [-Ccu] -s dize1
tr [-Ccu] -ds dize1 dize2

Açıklama

tr aracı, seçilen karakterlerin değiştirilmesi veya silinmesiyle standart girdiyi standart çıktıya kopyalar.

İlk özet biçiminde, dize1 içindeki karakterler dize2 içindeki karakterlere dönüştürülür. dize1 içindeki ilk karakter dize2 içindeki ilk karaktere, ikinci karakter ikinci karaktere dönüştürülür ve bu şekilde devam eder. dize1, dize2 değerinden daha uzunsa dize2 içindeki son karakter, dize1 tükenene kadar yinelenir.

İkinci özet biçiminde, dize1 içindeki karakterler girdiden silinir.

Üçüncü özet biçiminde, dize1 içindeki karakterler -s seçeneği için açıklandığı gibi sıkıştırılır.

Dördüncü özet biçiminde, dize1 içindeki karakterler girdiden silinir ve dize2 içindeki karakterler -s seçeneği için açıklandığı gibi sıkıştırılır.

Seçenekler

  • -C: dize1 içindeki karakter kümesini tamamlar. Örneğin -C ab, a ve b dışındaki her karakteri içerir.
  • -c: -C ile aynıdır, ancak dize1 içindeki değerler kümesini tamamlar.
  • -d: Girdideki dize1 karakterlerini siler.
  • -s: Girdide, son işlenende (dize1 veya dize2) listelenen karakterlerin art arda birden fazla kez geçmesini o karakterin tek bir örneğine sıkıştırır. Bu işlem, tüm silme ve dönüştürme işlemleri tamamlandıktan sonra yapılır.
  • -u: Çıktının arabelleğe alınmamasını garanti eder.

Karakter Gösterimleri

Karakter kümelerini belirtmek için dize1 ve dize2 içinde aşağıdaki gösterimler kullanılabilir:

  • karakter: Aşağıdaki gösterimlerden biriyle tanımlanmayan herhangi bir karakter kendisini temsil eder.
  • \oktal: Ters eğik çizgiyi izleyen 1, 2 veya 3 oktal basamak, o kodlanmış değere sahip karakteri temsil eder. Oktal dizisinin ardından karakter olarak bir basamak yazmak için, oktal dizisinin solunu tam 3 oktal basamağa tamamlayacak şekilde sıfırla doldurun.
  • \karakter: Ters eğik çizgiyi izleyen bazı özel karakterler özel değerlerle eşleşir. Ters eğik çizgiyi izleyen diğer tüm karakterler doğrudan o karakterle eşleşir.
  • c-c: Oktal olmayan aralık uç noktaları için, karşılaştırma dizisi tarafından tanımlandığı şekilde aralık uç noktaları arasındaki karakterleri, uç noktalar dahil artan sırada temsil eder. Uç noktalardan biri veya ikisi oktal diziyse, belirtilen kodlanmış değer aralığını temsil eder.
  • [:sınıf:]: Tanımlanan karakter sınıfına ait tüm karakterleri temsil eder.
  • [=eşdeğer=]: eşdeğer ile aynı eşdeğerlik sınıfına ait olan ve kodlanmış değerlerine göre sıralanmış tüm karakterleri temsil eder.
  • [#*n]: # ile temsil edilen karakterin n kez tekrarlanmasını temsil eder. Bu ifade yalnızca dize2 içinde geçerlidir.

[#*n] gösteriminde n belirtilmemişse veya sıfırsa, dize2 değerini dize1 uzunluğuna kadar uzatacak büyüklükte yorumlanır. n değeri sıfırla başlıyorsa oktal, aksi halde ondalık değer olarak yorumlanır.

Aralık ifadelerinin önceki uygulamalardan farklı yorumlanmasıyla ilgili önemli notlar için Uyumluluk bölümüne bakın.

Kaçış Dizileri

\karakter biçiminde kullanılabilen özel kaçış dizileri şunlardır:

Gösterim Anlam
\a Uyarı karakteri.
\b Geri silme.
\f Sayfa sonu / yeni sayfa.
\n Yeni satır.
\r Satır başı.
\t Sekme.
\v Dikey sekme.

Karakter Sınıfları

[:sınıf:] gösteriminde kullanılabilen sınıf adları şunlardır:

Sınıf Anlam
alnum Alfanumerik karakterler.
alpha Alfabetik karakterler.
blank Boşluk karakterleri.
cntrl Kontrol karakterleri.
digit Sayısal karakterler.
graph Grafik karakterleri.
ideogram İdeografik karakterler.
lower Küçük harf alfabetik karakterler.
phonogram Fonografik karakterler.
print Yazdırılabilir karakterler.
punct Noktalama işaretleri.
rune Geçerli karakterler.
space Boşluk karakterleri.
special Özel karakterler.
upper Büyük harf karakterleri.
xdigit Onaltılık karakterler.

dize1 içinde [:lower:] ve dize2 içinde aynı göreli konumda [:upper:] kullanıldığında, geçerli yerel ayarın LC_CTYPE kategorisindeki toupper eşlemesinden gelen karakter çiftleri temsil edilir.

dize1 içinde [:upper:] ve dize2 içinde aynı göreli konumda [:lower:] kullanıldığında, geçerli yerel ayarın LC_CTYPE kategorisindeki tolower eşlemesinden gelen karakter çiftleri temsil edilir.

Büyük-küçük harf dönüştürme dışında, sınıflardaki karakterlerin sırası belirtilmemiştir. Bu sınıflara hangi ASCII karakterlerinin dahil olduğuyla ilgili ayrıntılar için ctype(3) ve ilgili kılavuz sayfalarına bakın.

Ortam

LANG, LC_ALL, LC_CTYPE ve LC_COLLATE ortam değişkenleri, tr komutunun çalışmasını environ(7) içinde açıklandığı şekilde etkiler.

Çıkış Durumu

tr aracı başarı durumunda 0, hata oluşursa 0 dışında bir değerle çıkar.

Örnekler

Aşağıdaki örnekler kabuğa girildiği şekliyle gösterilmiştir.

file1 içindeki kelimeleri, her satırda bir kelime olacak şekilde listeler. Burada kelime, en uzun harf dizisi olarak kabul edilir:

tr -cs "[:alpha:]" "\n" < file1

file1 içeriğini büyük harfe dönüştürür:

tr "[:lower:]" "[:upper:]" < file1

Bu kullanım, tüm yerel ayarlarda doğru çalıştığı için geleneksel UNIX deyimi olan tr a-z A-Z yerine tercih edilmelidir.

file1 içindeki yazdırılamayan karakterleri temizler:

tr -cd "[:print:]" < file1

e harfinin tüm vurgulu varyasyonlarındaki ayırt edici işaretleri kaldırır:

tr "[=e=]" "e"

Uyumluluk

tr komutunun önceki FreeBSD uygulamaları, aralık ifadelerindeki karakterleri geçerli yerel ayarın karşılaştırma sırasına göre sıralamıyordu. Bu durum, vurgusuz Latin karakterlerini, özellikle İngilizce metinlerde bulunanları, geleneksel UNIX deyimi olan tr A-Z a-z ile büyük harften küçük harfe dönüştürmeyi mümkün kılıyordu.

tr artık yerel ayarın karşılaştırma sırasına uyduğu için, küçük ve büyük harfler arasında bire bir eşleşme olmadığında veya bu iki durumdaki karakterlerin sırası farklı olduğunda bu deyim doğru sonuç üretmeyebilir. Örnekler bölümünde belirtildiği gibi, a-z ve A-Z gibi açık karakter aralıkları yerine [:lower:] ve [:upper:] karakter sınıfı ifadeleri kullanılmalıdır.

[=eşdeğer=] ifadesi ve aralıklar için karşılaştırma yalnızca tek baytlık yerel ayarlar için uygulanmıştır.

System V, tarihsel olarak karakter aralıklarını, tarihi BSD uygulamaları tarafından kullanılan ve POSIX tarafından standartlaştırılan c-c yerine [c-c] söz dizimiyle uygulamıştır. System V kabuk betikleri, aralığın başka bir aralığa eşlenmesi amaçlandığı sürece bu uygulama altında çalışmalıdır. Örneğin tr [a-z] [A-Z], dize1 içindeki [ karakterini dize2 içindeki [ karakterine eşleyeceği için çalışır.

Ancak betik, tr -d [a-z] komutunda olduğu gibi karakterleri siliyor veya sıkıştırıyorsa [ ve ] karakterleri silme veya sıkıştırma listesine dahil edilir; tarihi System V uygulamasında bu olmazdı. Ayrıca a, - ve z olmak üzere üç karakteri temsil etmek için a-z dizisine bağımlı olan betiklerin a\-z olarak yeniden yazılması gerekir.

tr aracı tarihsel olarak girdisindeki NUL baytlarının işlenmesine izin vermemiş ve girdi akışından NUL karakterlerini temizlemiştir. Bu uygulama, bu davranışı bir hata olarak kaldırmıştır.

tr aracı tarihsel olarak söz dizimi hatalarına karşı çok hoşgörülüydü; örneğin iki dize belirtilmediği sürece -c ve -s seçenekleri yok sayılırdı. Bu uygulama geçersiz söz dizimine izin vermez.

Standartlar

tr aracı IEEE Std 1003.1-2001 ("POSIX.1") standardına uygundur. ideogram, phonogram, rune ve special karakter sınıfları uzantıdır.

dize2 değerinin dize1 değerinden daha az karaktere sahip olması durumunda dize2 değerinin son karakterinin yinelenmesine POSIX izin verir, ancak bunu zorunlu kılmaz. Diğer POSIX sistemlerine taşınabilir olmayı hedefleyen kabuk betikleri, bu davranışa güvenmek yerine [#*] gösterimini kullanmalıdır.

-u seçeneği, IEEE Std 1003.1-2001 ("POSIX.1") standardına bir uzantıdır.