← man/text
sort — man sort — 80×24
ugur@toprak:~/man/text$man sort
Bölüm 1 Metin İşleme

sort

metin ve ikili (binary) dosyaların kayıtlarını (satırlarını) sıralar veya birleştirir

Özet

     sort [-bcCdfghiRMmnrsuVz] [-k field1[,field2]] [-S memsize] [-T dir] [-t char] [-o output]
	  [file ...]
     sort --help
     sort --version

Açıklama

sort aracı, metin ve ikili dosyaları satır satır sıralar. Bir satır, sonraki kayıttan bir yeni satır (varsayılan) veya NUL ´\0´ karakteri (-z seçeneği) ile ayrılmış bir kayıttır. Bir kayıt, yazdırılabilen veya yazdırılamayan herhangi bir karakteri içerebilir. Karşılaştırmalar, her bir girdi satırından çıkarılan bir veya daha fazla sıralama anahtarına dayanır ve geçerli yerel ayarın (locale) sıralama kurallarına ve gerçek sıralama davranışını ayarlayabilen belirtilen komut satırı seçeneklerine göre sözlüksel (lexicographically) olarak gerçekleştirilir. Varsayılan olarak, anahtarlar belirtilmemişse sort karşılaştırma için tüm satırları kullanır.

Komut satırı seçenekleri aşağıdaki gibidir:

-c, --check, -C, --check=silent|quiet Tek girdi dosyasının sıralı olup olmadığını kontrol eder. Dosya sıralı değilse sort uygun hata mesajlarını üretir ve 1 çıkış koduyla sonlanır, aksi takdirde 0 döndürür. -C veya --check=silent belirtilirse sort çıktı üretmez. Bu, -c seçeneğinin "sessiz" bir sürümüdür.

-m, --merge Yalnızca birleştirir. Girdi dosyalarının önceden sıralanmış olduğu varsayılır. Sıralanmamışlarsa çıktı sırası belirsizdir.

-o output, --output=output Çıktıyı standart çıktı yerine output dosyasına yazdırır.

-S size, --buffer-size=size Bellek arabelleğinin maksimum boyutu için size değerini kullanır. %,b,K,M,G,T,P,E,Z,Y boyut değiştiricileri kullanılabilir. Bir bellek sınırı açıkça belirtilmemişse sort, kullanılabilir belleğin yaklaşık %90'ına kadarını alır. Dosya boyutu bellek arabelleğine sığmayacak kadar büyükse, sıralamayı gerçekleştirmek için geçici disk dosyaları kullanılır.

-T dir, --temporary-directory=dir Geçici dosyaları dir dizininde saklar. Varsayılan yol TMPDIR çevre değişkeninin değeridir veya TMPDIR tanımlanmamışsa /var/tmp dizinidir.

-u, --unique Benzersiz anahtarlar. Zaten işlenmiş bir anahtara eşit bir anahtara sahip olan tüm satırları bastırır (çıktılamaz). Bu seçenek, -s seçeneğine benzer şekilde kararlı bir sıralama (stable sort) ima eder. -c veya -C ile kullanılırsa sort ayrıca yinelenen anahtarlara sahip satırların olmadığını da kontrol eder.

  • -s: Kararlı sıralama (stable sort). Bu seçenek, eşit anahtara sahip kayıtların orijinal kayıt sırasını korur. Bu standart dışı bir özelliktir, ancak yaygın olarak kabul görmekte ve kullanılmaktadır.

--version Sürümü yazdırır ve sessizce çıkar.

  • --help: Yardım metnini yazdırır ve sessizce çıkar.

Aşağıdaki seçenekler varsayılan sıralama kurallarını geçersiz kılar. Sıralama seçenekleri anahtar alan belirtimlerinden bağımsız olarak göründüğünde, tüm sıralama anahtarlarına küresel (global) olarak uygulanır. Belirli bir anahtara eklendiğinde (bkz. -k), sıralama seçenekleri eklendikleri anahtar için tüm küresel sıralama seçeneklerini geçersiz kılar.

-b, --ignore-leading-blanks Satırları karşılaştırırken baştaki boşluk karakterlerini yok sayar.

-d, --dictionary-order Karşılaştırmalarda yalnızca boşlukları ve alfasayısal karakterleri dikkate alır.

-f, --ignore-case Karşılaştırmadan önce tüm küçük harfleri büyük harf eş değerlerine dönüştürür; yani büyük/küçük harfe duyarsız sıralama gerçekleştirir.

-g, --general-numeric-sort, --sort=general-numeric Genel sayısal değere göre sıralar. -n seçeneğinin aksine, bu seçenek genel kayan noktalı sayıları (floating points) işler. -n tarafından izin verilenden daha esnek bir biçime sahiptir ancak önemli bir performans dezavantajı vardır.

-h, --human-numeric-sort, --sort=human-numeric Sayısal değere göre sıralar, ancak varsa SI sonekini dikkate alır. Önce sayısal işarete göre (negatif, sıfır veya pozitif); ardından SI sonekine göre (bu sırayla boş veya k ya da K veya MGTPEZY harflerinden biri); ve son olarak sayısal değere göre sıralar. SI soneki hemen sayıyı takip etmelidir. Örneğin, '12345K' girdisi '1M' girdisinden önce sıralanır çünkü M, K'den "büyüktür". Bu sıralama seçeneği, -h veya -H seçenekleriyle (okunabilir biçimde) çağrılan tek bir 'df' komutunun çıktısını sıralamak için yararlıdır.

-i, --ignore-nonprinting Yazdırılamayan tüm karakterleri yok sayar.

-M, --month-sort, --sort=month Ay kısaltmalarına göre sıralar. Bilinmeyen dizeler ay adlarından daha küçük kabul edilir.

-n, --numeric-sort, --sort=numeric Alanları aritmetik değere göre sayısal olarak sıralar. Alanların başında isteğe bağlı boşluklar, isteğe bağlı bir eksi işareti, sıfır veya daha fazla basamak (ondalık nokta ve olası binlik sınırlayıcılar dahil) olması beklenir.

-R, --random-sort, --sort=random Rastgele bir sıraya göre sıralar. Bu, eşit anahtarların bir arada sıralanması hariç, girdilerin rastgele bir permütasyonudur. Girdi anahtarlarının karma değerinin alınması (hashing) ve karma (hash) değerlerinin sıralanmasıyla uygulanır. Karma işlevi rastgele seçilir. Karma işlevi /dev/random içeriğiyle veya --random-source ile belirtilmişse dosya içeriğiyle rastgele hale getirilir. Birden fazla sıralama alanı belirtilse bile, tümü için aynı rastgele karma işlevi kullanılır.

-r, --reverse Ters sırada sıralar.

-V, --version-sort Sürüm numaralarını sıralar. Girdi satırları ÖNEK SÜRÜM SONEK biçimindeki dosya adları olarak kabul edilir; burada SONEK, "(.([A-Za-z~][A-Za-z0-9~])?)" düzenli ifadesiyle eşleşir. Dosyalar öneklerine ve sürümlerine göre karşılaştırılır (sürüm numaralarındaki baştaki sıfırlar yok sayılır, aşağıdaki örneğe bakın). Bir girdi dizesi kalıpla eşleşmiyorsa, bayt karşılaştırma işlevi kullanılarak karşılaştırılır. Tüm dize karşılaştırmaları C yerel ayarında gerçekleştirilir, yerel çevre ayarı yok sayılır.

Örnek:

$ ls sort* | sort -V

sort-1.022.tgz

sort-1.23.tgz

sort-1.23.1.tgz

sort-1.024.tgz

sort-1.024.003.

sort-1.024.003.tgz

sort-1.024.07.tgz

sort-1.024.009.tgz

Alan sınırlayıcılarının işlenmesi şu seçenekler kullanılarak değiştirilebilir:

-b, --ignore-leading-blanks Kısıtlanmış bir sıralama anahtarının (bkz. -k) başlangıç ve bitişini belirlerken baştaki boşlukları yok sayar. İlk -k seçeneğinden önce -b belirtilirse, tüm anahtar belirtimlerine küresel olarak uygulanır. Aksi takdirde, -b seçeneği anahtar belirtimlerinin her bir alan argümanına bağımsız olarak eklenebilir. -k seçeneği ile belirtilen sıralama anahtarlarının, aşağıda -t seçeneği açıklamasında belirtildiği gibi sonucu etkileyecek değişken sayıda baştaki boşluk karakterine sahip olabileceğini unutmayın.

-k field1[,field2], --key=field1[,field2] Bir anahtar alanının başlangıç konumu field1 ve isteğe bağlı bitiş konumu field2 olan kısıtlanmış bir sıralama anahtarı tanımlar. -k seçeneği birden fazla kez belirtilebilir, bu durumda önceki anahtarlar eşit olduğunda sonraki anahtarlar karşılaştırılır. -k seçeneği, eskiyen +pos1 ve -pos2 seçeneklerinin yerini alır, ancak eski gösterim de desteklenmektedir.

-t char, --field-separator=char Alan sınırlayıcı karakter olarak char karakterini kullanır. Anahtar uzaklıklarını (offsets) belirlerken baştaki char karakteri alanın bir parçası olarak kabul edilmez. Her char karakteri oluşumu önemlidir (örneğin, “charchar” boş bir alanı sınırlar). -t belirtilmemişse, varsayılan alan sınırlayıcısı bir boşluk karakterleri dizisidir ve ardışık boşluklar boş bir alanı sınırlamaz; ancak anahtar uzaklıklarını belirlerken baştaki boşluk alanın bir parçası olarak kabul edilir. Alan sınırlayıcı olarak NUL kullanmak için -t ´\0´ kullanın.

-z, --zero-terminated Kayıt sınırlayıcı olarak NUL kullanır. Varsayılan olarak, dosyalardaki kayıtların yeni satır karakterleriyle ayrıldığı varsayılır. Bu seçenekle, kayıt sınırlayıcı karakter olarak NUL (´\0´) kullanılır.

Diğer seçenekler:

--batch-size=num sort tarafından tek seferde açılabilecek maksimum dosya sayısını belirtir. Bu seçenek, çok sayıda girdi dosyası olduğunda veya geçici dosyalar kullanıldığında davranışı etkiler. Varsayılan değer 16'dır.

--compress-program=PROGRAM Geçici dosyaları sıkıştırmak için PROGRAM kullanır. PROGRAM, argümansız çağrıldığında standart girdiyi standart çıktıya sıkıştırmalıdır. -d argümanıyla çağrıldığında standart girdiyi standart çıktıya açmalıdır. PROGRAM başarısız olursa, sort hata vererek çıkmalıdır. Burada kullanılabilen bir PROGRAM örneği bzip2'dir.

--random-source=filename Rastgele sıralamada, dosya içeriği karma işlevi seçimi için 'tohum' (seed) veri kaynağı olarak kullanılır. Aynı tohum verisiyle yapılan iki rastgele sıralama çağrısı aynı karma işlevini kullanacak ve girdi de özdeşse aynı sonucu üretecektir. Varsayılan olarak /dev/random dosyası kullanılır.

--debug Sıralama süreci hakkında bazı ekstra bilgileri standart çıktıya yazdırır.

--parallel Maksimum yürütme iş parçacığı (thread) sayısını ayarlar. Varsayılan sayı CPU sayısına eşittir.

--files0-from=filename Girdi dosyası listesini filename dosyasından alır. Dosya adları NUL ile ayrılmış olmalıdır (tıpkı "find ... -print0" komutu tarafından üretilen çıktı gibi).

--radixsort Sıralama belirtimleri izin veriyorsa taban sıralamasını (radix sort) kullanmayı dener. Taban sıralaması yalnızca önemsiz yerel ayarlarda (C ve POSIX) kullanılabilir ve sayısal veya aylık sıralama için kullanılamaz. Taban sıralaması çok hızlı ve kararlıdır.

--mergesort Birleştirmeli sıralamayı (mergesort) kullanır. Bu, her zaman kullanılabilen evrensel bir algoritmadır, ancak her zaman en hızlısı değildir.

--qsort Sıralama belirtimleri izin veriyorsa hızlı sıralamayı (quick sort) kullanmayı dener. Bu sıralama algoritması -u ve -s ile birlikte kullanılamaz.

--heapsort Sıralama belirtimleri izin veriyorsa yığın sıralamasını (heap sort) kullanmayı dener. Bu sıralama algoritması -u ve -s ile birlikte kullanılamaz.

  • --mmap: Dosya bellek eşleme (memory mapping) sistem çağrısını kullanmayı dener. Bazı durumlarda hızı artırabilir.

Aşağıdaki terimler mevcuttur:

file Sıralanacak, birleştirilecek veya kontrol edilecek bir dosyanın yol adı. Herhangi bir dosya terimi belirtilmemişse veya bir dosya terimi - ise, standart girdi kullanılır.

Bir alan, alan sınırlayıcısı ve kayıt sınırlayıcısı (varsayılan olarak yeni satır) dışındaki maksimum karakter dizisi olarak tanımlanır. Baştaki boşluklar, -b belirtilmedikçe alana dahil edilir; bir boşluk dizisinin ilk boşluğu alan sınırlayıcı olarak işlev görür ve alana dahil edilir (-t belirtilmedikçe). Örneğin, bir satırın başındaki tüm boşluklar birinci alanın bir parçası olarak kabul edilir.

Alanlar -k field1[,field2] komut satırı seçeneği ile belirtilir. field2 eksikse, anahtarın sonu varsayılan olarak satırın sonudur.

field1 ve field2 argümanları m.n (m,n > 0) biçimindedir ve bunları yukarıda tartışılan seçeneklere karşılık gelen b, d, f, i, n, g, M ve r değiştiricilerinden biri veya daha fazlası takip edebilir. b belirtildiğinde yalnızca belirtildiği field1 veya field2 için geçerliyken, geri kalan değiştiriciler yalnızca field1 veya field2 veya her ikisiyle birlikte belirtilip belirtilmediğine bakılmaksızın tüm anahtar alanına uygulanır. m.n tarafından belirtilen bir field1 konumu, m. alanın başlangıcından itibaren n. karakter olarak yorumlanır. field1 içindeki eksik bir .n, m. alanın ilk karakterini gösteren ‘.1’ anlamına gelir; -b seçeneği yürürlükteyse, n m. alandaki ilk boşluk olmayan karakterden itibaren sayılır; m.1b, m. alandaki ilk boşluk olmayan karakteri ifade eder. 1.n, satırın başlangıcından itibaren n. karakteri ifade eder; n satırın uzunluğundan büyükse, alan boş kabul edilir.

n. konumlar, alan belirtilen konum sayısından daha kısa olsa bile her zaman alanın başlangıcından itibaren sayılır. Bu nedenle, anahtar gerçekten sonraki bir alandaki bir konumdan başlayabilir.

m.n tarafından belirtilen bir field2 konumu, m. alanın başlangıcından itibaren n. karakter (sınırlayıcılar dahil) olarak yorumlanır. Eksik bir .n, m. alanın son karakterini gösterir; m = 0 bir satırın sonunu belirtir. Bu nedenle -k v.x,w.y seçeneği, artık kullanılmayan +v-1.x-1 -w-1.y seçeneği ile eş anlamlıdır; y atlandığında, -k v.x,w seçeneği +v-1.x-1 -w.0 ile eş anlamlıdır. Artık kullanılmayan +pos1 -pos2 seçeneği, -k eş değeri olmayan -w.0b hariç olmak üzere hala desteklenmektedir.

Çevre

LC_COLLATE Kayıtları sıralamak için kolasyonu (collation) belirlemede kullanılacak yerel ayarlar.

LC_CTYPE Harf dönüştürme ve karakterlerin sınıflandırılması için kullanılacak yerel ayarlar; yani hangi karakterlerin boşluk kabul edileceği vb.

LC_MESSAGES sort komutunun yazdırdığı çıktı mesajlarının dilini belirleyen yerel ayarlar.

LC_NUMERIC Sayısal sıralamada kullanılan sayı biçimini belirleyen yerel ayarlar.

LC_TIME Aylık sıralamada kullanılan ay biçimini belirleyen yerel ayarlar.

LC_ALL Yukarıdaki tüm yerel ayarları geçersiz kılan yerel ayarlar. Bu çevre değişkeni, tüm bu ayarları tek seferde aynı değere ayarlamak için kullanılabilir.

LANG İlgili çevre değişkeni veya LC_ALL ayarlanmamışsa, yerel ayara özgü farklı davranış türlerini belirlemek için son çare olarak kullanılır.

TMPDIR Geçici dosyaların saklanacağı dizinin yolu. TMPDIR değişkeninin -T seçeneği ile geçersiz kılınabileceğini unutmayın.

GNUSORT_NUMERIC_COMPATIBILITY Tanımlanırsa, -t seçeneği yerel sayısal sembolleri, yani binlik sınırlayıcıları ve ondalık sınırlayıcıları geçersiz kılmaz. Varsayılan olarak, -t seçeneğini binlik sınırlayıcı veya ondalık nokta ile aynı sembolle belirtirsek, sembol alan sınırlayıcısı olarak kabul edilecektir. Eski davranış daha az belirgindi; sembol aynı anda hem alan sınırlayıcısı hem de sayısal sınırlayıcı olarak kabul edilirdi. Bu çevre değişkeni eski davranışı etkinleştirir.

GNUSORT_COMPATIBLE_BLANKS Alan sınırlayıcıları olarak 'boşluk' sembollerini kullanır (modern GNU sort komutunun yaptığı gibi).

Dosyalar

/var/tmp/.bsdsort.PID.* Geçici dosyalar. /dev/random Rastgele sıralama için varsayılan tohum dosyası.

Çıkış Durumu

sort aracı aşağıdaki değerlerden biriyle çıkış yapmalıdır:

0 Girdi dosyaları başarıyla sıralandı veya -c ya da -C ile kullanıldığında, girdi dosyası zaten sıralama kriterlerini karşılıyordu. 1 -c veya -C seçenekleriyle düzensizlik (veya benzersiz olmama) durumunda. 2 Bir hata oluştu.

Ayrıca Bkz.

comm(1), join(1), uniq(1)

Standartlar

sort aracı, IEEE Std 1003.1-2008 (“POSIX.1”) spesifikasyonu ile uyumludur.

[-ghRMSsTVz] bayrakları POSIX spesifikasyonuna yapılan uzantılardır.

Tüm uzun seçenekler spesifikasyona yapılan uzantılardır, bazıları GNU sürümleriyle uyumluluk için sağlanmıştır ve bazıları kendi uzantılarımızdır.

Eski anahtar gösterimleri +pos1 ve -pos2, sort komutunun eski sürümlerinden kalmadır ve hala desteklenmektedir ancak kullanılması kesinlikle önerilmez.

Tarihçe

Bir sort komutu ilk olarak Version 1 AT&T UNIX sürümünde yer almıştır.

Yazarlar

Gabor Kovesdan gabor@FreeBSD.org,

Oleg Moskalenko mom040267@gmail.com

Notlar

sort komutunun bu uygulamasında girdi satırı uzunluğu (kullanılabilir bellek tarafından getirilen sınırlar dışında) veya satır içinde izin verilen baytlar üzerinde herhangi bir kısıtlama yoktur.

Performans; yerel ayarlara, sıralama anahtarlarının verimli seçimine ve anahtar karmaşıklığına son derece bağlıdır. En hızlı sıralama, -s seçeneğiyle, tüm satırlar üzerinde C yerel ayarındadır. Genel olarak C yerel ayarı en hızlısıdır, ardından tek baytlık yerel ayarlar gelir ve çok baytlık yerel ayarlar en yavaş olanlardır ancak doğru sıralama (collation) sırasına her zaman uyulur. Anahtar belirtimine gelince, satırları işlemek ne kadar basit olursa arama o kadar hızlı olacaktır.

Aritmetik değere göre sıralama yaparken, -n seçeneğinin kullanılması -g seçeneğine göre çok daha iyi performans sağlar, bu nedenle mümkün olduğunda kullanılması önerilir.

macOS 26.4 4 Eylül 2019 macOS 26.4