Önkoşullar:
Bu eğitim örneğini uygulamadan önce bir CSV dosyası oluşturmanız gerekir. Bu eğitimde kullanılan komut dosyasının çıktısını kontrol etmek için aşağıdaki içeriğe sahip “customers.csv” adlı bir CSV dosyası oluşturun. Bu dosyada 3. rd 4'ün alanları inci satır ve 6 inci satır boş.
Kimlik, Ad, E-posta, Adres, Mobil101 , Cafer İkbal, Cafer @ gmail.com, 9 / Bir Dhanmondi Dhaka, + 8801762341425
102 , Kemal Hüseyin, Kemal @ gmail.com, 120 Mirpur Dakka, 8801988675345
103 Nirob Chowdhury 33 / 2 Jigatola Dakka, 8801754532312
104 Ferhin Hasan @ gmail.com < A href = 'boşluk' > , A > 10 Kadhalbagun Dakka, + 8801512875634
105 , Md. Rahim, 2 / B Dhanmondi Dhaka, + 8801700453423
Bash'te CSV Dosyasını Okumanın Farklı Yolları
CSV dosyası, bir Bash betiği kullanılarak farklı şekillerde ayrıştırılabilir. Eğitimin bu bölümünde “customers.csv” dosyasını okumanın farklı yolları gösterilmektedir.
Örnek 1: CSV Dosyasının Orijinal İçeriğini Okuyun
'while' döngüsünü kullanarak 'customers.csv' dosyasının tüm içeriğini okuyan aşağıdaki komut dosyasıyla bir Bash dosyası oluşturun:
#!/bin/bash
#Dosya adını ayarla
dosya adı = 'müşteriler.csv'
#Her yinelemede dosyanın her satırını oku
sırasında Okumak veri
Yapmak
#Satırı yazdır
Eko $veri
Tamamlandı < $dosyaadı
Komut dosyası yürütüldükten sonra aşağıdaki çıktı görünür:
Örnek 2: Başlığı Büyük Harf Yaparak CSV Dosyasını Okuyun
“customers.csv” dosyasının ilk satırı dosyanın başlığını içerir. Dosyanın ilk satırını büyük harfle yazdıktan sonra 'customers.csv' dosyasının içeriğini yazdıran aşağıdaki komut dosyasıyla bir Bash dosyası oluşturun. Komut dosyasında, başlığı büyük harfle yazdıktan sonra dosyanın içeriğini yazdırmak için “awk” komutu kullanılır. “customers.csv” dosyasını okumak ve “updatedcustomers.csv” dosyasını yazmak için komut dosyasındaki FS ve OFS değerlerine virgül(,) atanır. Her iki dosyanın içeriğini yazdırmak için “cat” komutu kullanılır.
printf 'Orijinal dosya: \N '#CSV dosyasının orijinal içeriğini yazdır
kedi cstomers.csv
#Başlığı büyük harfle yazdıktan sonra yeni bir CSV dosyası oluştur
awk 'BAŞLA{FS=',';OFS=','}
{
eğer(NR==1)
üst baskı($0)
başka
Yazdır
}' müşteriler.csv > güncellenmişmüşteriler.csv
printf ' \N Değiştirilmiş Dosya: \N '
#Yeni CSV dosyasını yazdır
kedi güncellenmişmüşteriler.csv
Komut dosyası yürütüldükten sonra aşağıdaki çıktı görünür:
Örnek 3: CSV Dosyasının Boş Alanını 'Yok' ile Değiştirin
Boş alanı 'Yok' değeriyle değiştirdikten sonra 'customers.csv' dosyasının içeriğini yazdıran aşağıdaki komut dosyasıyla bir Bash dosyası oluşturun. Bu dosyada aşağıda belirtilen iki alan boştur. Komut dosyasında boş alanları değiştirdikten sonra dosyanın içeriğini yazdırmak için “awk” komutu kullanılır. “customers.csv” dosyasını okumak ve “updatedcustomers.csv” dosyasını yazmak için komut dosyasındaki FS ve OFS değerlerine virgül(,) atanır. Her iki dosyanın içeriğini tablo biçiminde yazdırmak için “cat” komutu kullanılır.
printf 'Orijinal dosya: \N '#CSV dosyasının orijinal içeriğini tablo biçiminde yazdır
kedi müşteriler.csv | sütun -s, -T
awk 'BAŞLA{FS=',';OFS=','}
{
for(field=1;field<=NF;field++)
{
if($field == '') $field='Yok'
}
Yazdır
}' müşteriler.csv > değiştirilmişmüşteriler2.csv
printf ' \N Değiştirilmiş Dosya: \N '
#Yeni CSV dosyasını tablo biçiminde yazdır
kedi değiştirilmişmüşteriler2.csv | sütun -s, -T
Komut dosyası yürütüldükten sonra aşağıdaki çıktı görünür:
Örnek 4: CSV Dosyasının Toplam Satır ve Sütun Sayısını Yazdırma
'customers.csv' dosyasındaki toplam satır ve sütun sayısını sayan aşağıdaki komut dosyasıyla bir Bash dosyası oluşturun. NR değişkeni, dosyanın toplam satır sayısını yazdırmak için kullanılır. NF değişkeni, dosyanın toplam alan sayısını yazdırmak için kullanılır.
printf 'Orijinal dosya: \N '#CSV dosyasının orijinal içeriğini yazdır
kedi müşteriler.csv
Eko
Eko -N 'Toplam satır sayısı:'
awk -F, 'END{NR yazdır}' müşteriler.csv
Eko -N 'Toplam sütunlar:'
awk -F, 'END{NF yazdır}' müşteriler.csv
Komut dosyasını çalıştırdıktan sonra aşağıdaki çıktı görünür. Dosyadaki toplam satır sayısı 6'dır ve dosyanın çıktıda yazdırılan toplam alanı 5'tir:
Çözüm
Bash betiğini kullanarak bir CSV dosyasını okuma, CSV dosyasını değiştirme ve CSV dosyasının satırlarını ve sütunlarını sayma yöntemleri bu eğitimde gösterilmektedir.