cut Komutu Kılavuzu ve Pratik Örnekler

Linux/Unix ortamlarında metin dosyalarından belirli alanları, karakterleri veya baytları kesip çıkarmak için kullanılan 'cut' komutunun detaylı kullanım kılavuzu ve pratik örnekler.

L
Linuxize
0 görüntülenme

Giriş

cut komutu, metin dosyalarından belirli alanları, karakterleri veya baytları kesmek ve çıkarmak için kullanılan güçlü bir Unix/Linux aracıdır. Özellikle log dosyaları, CSV verileri ve yapılandırılmış metinlerdeki belirli bölümleri ayıklamak için yaygın olarak kullanılır. Bu kılavuzda, cut komutunun temel ve ileri düzey kullanımlarını, yaygın senaryoları ve hata ayıklama yöntemlerini detaylı olarak inceleyeceğiz.

Temel Kullanım

cut komutu üç temel modda çalışır: alan seçimi (-f), karakter seçimi (-c) ve bayt seçimi (-b). Varsayılan ayraç karakteri TAB (\t) olup, bu ayar -d parametresi ile değiştirilebilir.

Alan Seçimi (-f)

Alan seçimi, metin dosyalarındaki belirli sütunları (alanları) çıkarmak için kullanılır. Bu mod varsayılan olarak TAB ayraçlı dosyalar için optimize edilmiştir.

Temel alan seçim komutları:

# Tek bir alanı seçmek
cut -f1 file.txt

# Birden fazla alanı seçmek (virgülle ayrılmış)
cut -f1,3 file.txt

# Ardışık alan aralığı seçmek
cut -f1-4 file.txt

# Belirli bir alandan sonuna kadar seçmek
cut -f2- file.txt

# Başlangıçtan belirli bir alana kadar seçmek
cut -f-3 file.txt

Ayraç Ayarlama (-d)

Metin dosyalarında farklı ayraçlar kullanıldığında, -d parametresi ile ayraç belirtmek gerekir. Örneğin, CSV dosyalarında genellikle virgül (,) ayraç olarak kullanılır.

# Virgül ayraçlı dosyada ilk alanı seçmek
cut -d',' -f1 file.csv

# İki nokta üst üste (:) ayraçlı dosyada 1. ve 3. alanları seçmek
cut -d':' -f1,3 /etc/passwd

# Boşluk ayraçlı dosyada ikinci alanı seçmek
cut -d' ' -f2 file

İpucu: Eğer dosyada ayraç karakteri bulunmayan satırlar varsa ve bunları çıkarmak istiyorsanız -s parametresini kullanabilirsiniz. Bu parametre, ayraç içermeyen satırları tamamen atlar.

Çıkış Ayraçlarını Değiştirme

Varsayılan olarak, cut komutu çıkışta da aynı ayraç karakterini kullanır. Farklı bir ayraç kullanmak için --output-delimiter parametresini kullanabilirsiniz.

# Çıkış ayraçlarını alt çizgi (_) olarak ayarlamak
cut --output-delimiter='_' -f1,3 file.txt

Karakter ve Bayt Seçimi

cut komutu, alan seçimi dışında karakter ve bayt bazında da seçim yapabilir. Bu özellik, sabit genişlikli dosyalar veya belirli karakter pozisyonlarını çıkarmak gerektiğinde kullanışlıdır.

Karakter Seçimi (-c)

Karakter seçimi, metin dosyalarında belirli karakter pozisyonlarını çıkarmak için kullanılır. Bu mod, Unicode karakterleri de destekler.

# İlk 10 karakteri seçmek
cut -c1-10 file.txt

# 3. karakterden sonuna kadar seçmek
cut -c3- file.txt

# Belirli karakter pozisyonlarını seçmek (1, 4, 7)
cut -c1,4,7 file.txt

Bayt Seçimi (-b)

Bayt seçimi, dosyadaki bayt pozisyonlarına göre seçim yapar. Bu mod, ikili dosyalar veya karakter kodlamasıyla ilgili sorunlar yaşandığında kullanılır. Ancak, çok baytlı karakterler (örneğin UTF-8) için doğru sonuç vermeyebilir.

# İlk 5 baytı seçmek
cut -b1-5 file.txt

# Belirli bayt pozisyonlarını seçmek (5, 9, 13)
cut -b5,9,13 file.txt

Uyarı: -b parametresi, çok baytlı karakterler için doğru sonuç vermeyebilir. Bu durumda -c parametresini kullanmak daha güvenlidir.

Seçimi Tersine Çevirme ve Diğer Araçlarla Birleştirme

cut komutu, seçilen alanların dışındaki tüm içerikleri çıkarmak için --complement parametresini destekler. Ayrıca, diğer komutlarla zincirleme olarak kullanılabilir.

Seçimi Tersine Çevirme

# 1. ve 3. alanlar dışındaki tüm alanları seçmek
cut -f1,3 --complement file.txt

# 1-5. karakterler dışındaki tüm karakterleri seçmek
cut -c1-5 --complement file.txt

Diğer Araçlarla Birleştirme

cut komutu, genellikle diğer komutlarla birlikte kullanılarak daha güçlü veri işleme senaryoları oluşturulabilir.

# /etc/passwd dosyasından kullanıcı adlarını ve giriş kabuklarını çıkarmak
cut -d':' -f1,7 /etc/passwd

# PATH değişkeninin ilk girişini çıkarmak
echo "$PATH" | cut -d':' -f1

# CSV dosyasının ikinci sütununu çıkarmak
cut -d',' -f2 data.csv

Yaygın Kullanım Senaryoları

Aşağıda, cut komutunun gerçek dünya senaryolarında nasıl kullanılabileceğine dair bazı örnekler bulunmaktadır.

Sistem Kullanıcılarını Listelemek

# Tüm sistem kullanıcılarını listelemek
getent passwd | cut -d':' -f1

Kullanıcının Varsayılan Kabuğunu Bulmak

# Mevcut kullanıcının varsayılan kabuğunu bulmak
grep "^$USER:" /etc/passwd | cut -d':' -f7

Tekrarlanan Boşlukları Normalleştirmek ve Alan Seçmek

# Tekrarlanan boşlukları tek boşlukla değiştirmek, ardından ikinci alanı seçmek
echo "one  two   three" | tr -s ' ' | cut -d' ' -f2

Dosya İzinlerini Çıkarmak

# Bir dosyanın izin dizgisini çıkarmak
ls -l file.txt | cut -c1-10

Giriş Yapan Kullanıcıları Listelemek

# Giriş yapan kullanıcıları listelemek ve tekilleştirmek
who | cut -d' ' -f1 | sort -u

Hata Ayıklama ve Yaygın Sorunlar

cut komutunu kullanırken karşılaşılan yaygın sorunlar ve çözümleri aşağıda listelenmiştir.

Tüm Satırın Değişmeden Yazdırılması

Sorun: Dosya içeriği değişmeden çıktılanıyor.

Çözüm: Doğru ayraç karakterini kullanmadığınız için olabilir. Varsayılan ayraç TAB (\t) olup, dosyanızda farklı bir ayraç kullanılıyorsa -d parametresi ile belirtin.

# Örnek: Virgül ayraçlı CSV dosyası
cut -d',' -f1 file.csv

Ayraç İçermeyen Satırların Yazdırılması

Sorun: Ayraç içermeyen satırlar da çıktılanıyor.

Çözüm: -s parametresini kullanarak ayraç içermeyen satırları atlayabilirsiniz.

cut -s -d',' -f1 file.csv

Birden Fazla Seçim Modunun Kullanılması

Sorun: -f, -b ve -c parametreleri aynı komutta kullanılamıyor.

Çözüm: Her komutta yalnızca bir seçim modu kullanın. Örneğin, hem alan hem de karakter seçimi yapmak istiyorsanız, komutları ayrı ayrı çalıştırın veya awk gibi daha esnek bir aracı kullanın.

Çok Baytlı Karakterlerin Bozulması

Sorun: UTF-8 gibi çok baytlı karakterler bozuluyor.

Çözüm: -c parametresini kullanarak karakter bazında seçim yapın. -b parametresi bayt bazında seçim yaptığı için çok baytlı karakterlerde sorunlara yol açabilir.

cut -c1-10 file.txt

Tekrarlanan Boşlukların Yanlış Ayrılması

Sorun: Tekrarlanan boşluklar farklı alanlar olarak algılanıyor.

Çözüm: cut komutu ayraçları birebir dikkate alır. Tekrarlanan boşlukları normalleştirmek için tr -s komutunu kullanın veya awk gibi daha esnek bir araç tercih edin.

echo "one  two   three" | tr -s ' ' | cut -d' ' -f2

İlgili Kaynaklar ve İleri Düzey Kullanımlar

cut komutunun yanı sıra, metin işleme işlemlerinde sıkça kullanılan diğer komutlar hakkında daha detaylı bilgiye sahip olmak için aşağıdaki kaynaklara göz atabilirsiniz.

Sonuç

cut komutu, Linux/Unix ortamlarında metin dosyalarından belirli bölümleri hızlı ve verimli bir şekilde çıkarmak için kullanılan temel bir araçtır. Alan, karakter ve bayt bazında seçim yapabilme özelliği, çeşitli veri işleme senaryolarında kullanılmasını sağlar. Bu kılavuzda ele alınan temel ve ileri düzey kullanımlar, cut komutunu daha etkili bir şekilde kullanmanıza yardımcı olacaktır.

Unutmayın ki, cut komutu bazı sınırlamalara sahiptir. Örneğin, çok karmaşık desenler için awk gibi daha güçlü araçlar tercih edilebilir. Bununla birlikte, basit ve hızlı metin işleme gereksinimleri için cut komutu ideal bir seçimdir.

Kaynak

Linuxize