Bash Scripting

Bash’te Yinelenen Satırları Etkin Bir Şekilde Kaldırma

Spread the love

Bir metin dosyasından yinelenen satırları kaldırmak, Bash betiğinde yaygın bir görevdir. Bu makale, iki verimli yöntemi ele almaktadır: sort ve uniq kullanımı ve awk‘ın gücünden yararlanma.

İçindekiler

sort ve uniq Kullanımı

Bu yaklaşım, basit bir çözüm için iki temel Unix yardımcı programını birleştirir. sort satırları alfabetik olarak sıralar, bu da ardışık yinelenenleri kaldıran uniq için bir ön koşuldur. Her satırın *ilk* oluşumunun sırası korunur.

Komut şu şekildedir:


sort file.txt | uniq > file_unique.txt

Bu, file.txt‘nin sıralanmış çıktısını uniq‘e yönlendirir ve benzersiz satırları file_unique.txt dosyasına kaydeder. Orijinal dosya dokunulmadan kalır.

Örnek:

Eğer file.txt şunları içeriyorsa:


apple
banana
apple
orange
banana
grape

file_unique.txt şunları içerecektir:


apple
banana
grape
orange

awk Komutunu Kullanma

awk, özellikle satırların orijinal sırasının korunmasının önemli olduğu durumlarda daha esnek ve güçlü bir çözüm sunar. Karşılaşılan satırları izlemek için ilişkisel bir dizi kullanır.

Komut oldukça özlüdür:


awk '!seen[$0]++' file.txt > file_unique.txt

Şimdi bunu inceleyelim:

  • $0 geçerli satırı temsil eder.
  • seen[$0], satırı anahtar olarak kullanarak seen dizisindeki bir öğeye erişir.
  • ++ değeri (başlangıçta 0) artırır.
  • ! sonucu tersine çevirir; satır yalnızca ilk kez karşılaşıldığında (seen[$0] 0 olduğunda) yazdırılır.

Bu yöntem, satırların orijinal sırasını korur.

Örnek:

Aynı file.txt dosyasını kullanarak, file_unique.txt‘deki çıktı şu olacaktır:


apple
banana
orange
grape

Sonuç:

Her iki yöntem de yinelenen satırları etkili bir şekilde kaldırır. sort | uniq, temel senaryolar için daha basittir, oysa awk, özellikle orijinal sırayı korumak veya daha karmaşık yinelenen kaldırma ihtiyaçlarını ele almak için üstün esneklik ve kontrol sağlar.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir