'tab', sekmeyle ayrılmış dosyada ayırıcı olarak kullanılır. Bu tür metin dosyası, çeşitli metin verilerini yapılandırılmış bir biçimde depolamak için oluşturulur. Bu tür dosyaları ayrıştırmak için Linux'ta farklı komut türleri vardır. 'awk' komutu, sekmeyle ayrılmış dosyayı farklı şekillerde ayrıştırmanın yollarından biridir. Sekmeyle ayrılmış dosyayı okumak için 'awk' komutunun kullanımı bu öğreticide gösterilmiştir.
Sekmeyle ayrılmış bir dosya oluşturun:
adlı bir metin dosyası oluşturun kullanıcılar.Txt Bu öğreticinin komutlarını test etmek için aşağıdaki içerikle. Bu dosya kullanıcının adını, e-posta adresini, kullanıcı adını ve şifresini içerir.
kullanıcılar.Txt
Ad E-posta Kullanıcı adı Şifremd. Robin [e-posta korumalı] robin89 563425
Nila Hasan [e-posta korumalı] nila78 245667
Mirza Abbas [e-posta korumalı] mirza23 534788
Aornob Hasan [e-posta korumalı] arnob45 778473
Nuhas Ahsan [e-posta korumalı] nuhas34 563452
Örnek-1: -F seçeneğini kullanarak sekmeyle ayrılmış bir dosyanın ikinci sütununu yazdırın
Aşağıdaki 'sed' komutu, sekmeyle ayrılmış bir metin dosyasının ikinci sütununu yazdıracaktır. Burada, '-F' seçenek, dosyanın alan ayırıcısını tanımlamak için kullanılır.
$ kedi kullanıcıları.Txt$ awk -F '\t' 'print $2' kullanıcıları.Txt
Komutları çalıştırdıktan sonra aşağıdaki çıktı görünecektir. Dosyanın ikinci sütunu, çıktı olarak görüntülenen kullanıcının e-posta adreslerini içerir.
Örnek-2: FS değişkenini kullanarak sekmeyle ayrılmış bir dosyanın ilk sütununu yazdırın
Aşağıdaki 'sed' komutu, sekmeyle ayrılmış bir metin dosyasının ilk sütununu yazdıracaktır. Buraya, FS (Alan Ayırıcı) değişkeni, dosyanın alan ayırıcısını tanımlamak için kullanılır.
$ kedi kullanıcıları.Txt$ awk ' print $1 ' FS='\t' kullanıcılar.Txt
Komutları çalıştırdıktan sonra aşağıdaki çıktı görünecektir. Dosyanın ilk sütunu, çıktı olarak görüntülenen kullanıcı adlarını içerir.
Örnek-3: Sekmeyle ayrılmış bir dosyanın üçüncü sütununu biçimlendirme ile yazdırın
Aşağıdaki "sed" komutu, sekmeyle ayrılmış metin dosyasının üçüncü sütununu, FS değişken ve baskı. Burada, FS dosyanın alan ayırıcısını tanımlamak için değişken kullanılır.
$ kedi kullanıcıları.Txt$ awk 'BEGINFS="\t" printf "%10s\n", $3' kullanıcı.Txt
Komutları çalıştırdıktan sonra aşağıdaki çıktı görünecektir. Dosyanın üçüncü sütunu, burada yazdırılan kullanıcı adını içerir.
Örnek-4: Sekmeyle ayrılmış dosyanın üçüncü ve dördüncü sütunlarını OFS kullanarak yazdırın
OFS (Çıkış Alanı Ayırıcı), çıktıya bir alan ayırıcı eklemek için kullanılır. Aşağıdaki 'awk' komutu, dosyanın içeriğini tab(\t) ayırıcısına göre böler ve ayırıcı olarak tab(\t) kullanarak 3. ve 4. sütunları yazdırır.
$ kedi kullanıcıları.Txt$ awk -F "\t" 'OFS="\t" yazdır $3, $4 > ("çıktı.txt")' kullanıcıları.Txt
$ kedi çıktısı.Txt
Yukarıdaki komutları çalıştırdıktan sonra aşağıdaki çıktı görünecektir. 3. ve 4. sütunlar, burada yazdırılan kullanıcı adını ve şifreyi içerir.
Örnek-5: Sekmeyle ayrılmış dosyanın belirli içeriğini değiştirin
sub() işlevi, ikame komutu için 'awk'da kullanılır. Aşağıdaki 'awk' komutu, 45 numarayı arayacak ve dosyada aranan numara varsa 90 numara ile değiştirecektir. Değiştirme işleminden sonra dosyanın içeriği çıktıda saklanacaktır.robots.txt dosyası.
$ kedi kullanıcıları.Txt$ awk -F "\t"'sub(/45/,90);print' kullanıcıları.txt > çıktı.Txt
$ kedi çıktısı.Txt
Yukarıdaki komutları çalıştırdıktan sonra aşağıdaki çıktı görünecektir. Çıktı.robots.txt dosyası, ikame uygulandıktan sonra değiştirilen içeriği gösterir. Burada, 5. satırın içeriği değişti ve "arnob45", "arnob90" olarak değiştirildi.
Örnek-6: Sekmeyle ayrılmış bir dosyanın her satırının başına dize ekleyin
Aşağıda, 'awk' komutu, '-F' seçeneği, dosyanın içeriğini sekmeye (\t) göre bölmek için kullanılır. OFS, çıktıda alan ayırıcı olarak virgül(,) eklemek için kullandı. sub() işlevi, çıktının her satırının başına '-→' dizesini eklemek için kullanılır.
$ kedi kullanıcıları.Txt$ awk -F "\t" 'OFS=",";sub(/^/, "---->");$1,$2,$3' kullanıcıları yazdır.Txt
Yukarıdaki komutları çalıştırdıktan sonra aşağıdaki çıktı görünecektir. Her alan değeri virgül (,) ile ayrılır ve her satırın başına bir dize eklenir.
Örnek-7: gsub() işlevini kullanarak sekmeyle ayrılmış bir dosyanın değerini değiştirin
gsub() işlevi, genel ikame için 'awk' komutunda kullanılır. Dosyanın tüm dize değerleri, arama modelinin eşleştiği yerde değiştirilir. sub() ve gsub() işlevleri arasındaki temel fark, sub() işlevinin ilk eşleşmeyi bulduktan sonra ikame görevini durdurması ve gsub() işlevinin ikame için dosyanın sonunda kalıbı aramasıdır. Aşağıdaki 'awk' komutu, dosyada global olarak 'nila' ve 'Mira' kelimelerini arayacak ve tüm oluşumları, arama kelimesinin eşleştiği yerde 'Geçersiz Ad' metniyle değiştirecektir.
$ kedi kullanıcıları.Txt$ awk -F '\t' 'gsub(/nila|Mira/, "Geçersiz Ad"); print' kullanıcıları.Txt
Yukarıdaki komutları çalıştırdıktan sonra aşağıdaki çıktı görünecektir. Çıktıda "Geçersiz Ad" kelimesiyle değiştirilen dosyanın 3. satırında iki kez "nila" kelimesi var.
Örnek-8: Sekmeyle ayrılmış bir dosyadan biçimlendirilmiş içeriği yazdırın
Aşağıdaki 'awk' komutu, dosyanın birinci ve ikinci sütunlarını printf kullanarak biçimlendirme ile yazdıracaktır. Çıktı, e-posta adresini parantez içine alarak kullanıcının adını gösterecektir.
$ kedi kullanıcıları.Txt$ awk -F '\t' 'printf "%s(%s)\n", $1,$2' kullanıcı.Txt
Yukarıdaki komutları çalıştırdıktan sonra aşağıdaki çıktı görünecektir.
Sonuç
Sekmeyle ayrılmış herhangi bir dosya, 'awk' komutu kullanılarak kolayca ayrıştırılabilir ve başka bir sınırlayıcıyla yazdırılabilir. Sekmeyle ayrılmış dosyaları ayrıştırmanın ve farklı biçimlerde yazdırmanın yolları bu öğreticide birden çok örnek kullanılarak gösterilmiştir. Sekmeyle ayrılmış dosyanın içeriğini değiştirmek için 'awk' komutundaki sub() ve gsub() işlevlerinin kullanımları da bu eğitimde açıklanmaktadır. Umarım bu eğitim, okuyucuların bu öğreticinin örneklerini düzgün bir şekilde uyguladıktan sonra sekmeyle ayrılmış dosyayı kolayca ayrıştırmalarına yardımcı olur.