AWK - Güzel Baskı
Şimdiye kadar AWK'leri kullandık print ve printfstandart çıktıda verileri görüntülemek için işlevler. Ancak printf, daha önce gördüklerimizden çok daha güçlü. Bu işlev C dilinden alınmıştır ve biçimlendirilmiş çıktı üretirken çok faydalıdır. Printf ifadesinin sözdizimi aşağıdadır -
Sözdizimi
printf fmt, expr-list
Yukarıdaki sözdiziminde fmt biçim belirtimleri ve sabitlerinden oluşan bir dizedir. expr-list biçim belirleyicilerine karşılık gelen bağımsız değişkenlerin listesidir.
Kaçış dizileri
Herhangi bir dizeye benzer şekilde, format gömülü kaçış dizileri içerebilir. Aşağıda tartışılanlar, AWK tarafından desteklenen kaçış dizileridir -
Yeni hat
Aşağıdaki örnek yazdırılır Hello ve World yeni satır karakterini kullanarak ayrı satırlarda -
Example
[jerry]$ awk 'BEGIN { printf "Hello\nWorld\n" }'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
Hello
World
Yatay sekme
Aşağıdaki örnek, farklı alanı görüntülemek için yatay sekme kullanır -
Example
[jerry]$ awk 'BEGIN { printf "Sr No\tName\tSub\tMarks\n" }'
Yukarıdaki kodu çalıştırdığınızda aşağıdaki sonucu alırsınız -
Output
Sr No Name Sub Marks
Dikey Sekme
Aşağıdaki örnek, her dosyalandıktan sonra dikey sekme kullanır -
Example
[jerry]$ awk 'BEGIN { printf "Sr No\vName\vSub\vMarks\n" }'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
Sr No
Name
Sub
Marks
Geri tuşu
Aşağıdaki örnek, sonuncusu dışındaki her alandan sonra bir geri tuşu yazdırır. İlk üç alandan son sayıyı siler. Örneğin,Field 1 olarak görüntülenir Field, çünkü son karakter backspace ile silinir. Ancak son alanField 4 olduğu gibi görüntüleniyor, çünkü bir \b sonra Field 4.
Example
[jerry]$ awk 'BEGIN { printf "Field 1\bField 2\bField 3\bField 4\n" }'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
Field Field Field Field 4
Satırbaşı
Aşağıdaki örnekte, her alanı yazdırdıktan sonra, Carriage Return ve sonraki değeri geçerli yazdırılan değerin üstüne yazdırın. Bu, son çıktıda yalnızca görebileceğiniz anlamına gelirField 4, önceki tüm alanların üstüne basılacak son şey olduğu için.
Example
[jerry]$ awk 'BEGIN { printf "Field 1\rField 2\rField 3\rField 4\n" }'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
Field 4
Form besleme
Aşağıdaki örnek, her alanı yazdırdıktan sonra form beslemeyi kullanır.
Example
[jerry]$ awk 'BEGIN { printf "Sr No\fName\fSub\fMarks\n" }'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
Sr No
Name
Sub
Marks
Biçim Tanımlayıcısı
C dilinde olduğu gibi, AWK'nın da format belirleyicileri vardır. Printf ifadesinin AWK sürümü aşağıdaki dönüştürme özelliği biçimlerini kabul eder -
% c
Tek bir karakter yazdırır. Argüman için kullanılırsa%csayısaldır, bir karakter olarak değerlendirilir ve yazdırılır. Aksi takdirde, argümanın bir dize olduğu varsayılır ve bu dizenin tek ilk karakteri yazdırılır.
Example
[jerry]$ awk 'BEGIN { printf "ASCII value 65 = character %c\n", 65 }'
Output
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
ASCII value 65 = character A
% d ve% i
Ondalık sayının yalnızca tam sayı kısmını yazdırır.
Example
[jerry]$ awk 'BEGIN { printf "Percentags = %d\n", 80.66 }'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
Percentags = 80
% e ve% E
[-] d.dddddde [+ -] dd biçiminde bir kayan nokta sayısı yazdırır.
Example
[jerry]$ awk 'BEGIN { printf "Percentags = %E\n", 80.66 }'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
Percentags = 8.066000e+01
%E format kullanır E e yerine.
Example
[jerry]$ awk 'BEGIN { printf "Percentags = %e\n", 80.66 }'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
Percentags = 8.066000E+01
% f
[-] ddd.dddddd biçiminde bir kayan nokta sayısı yazdırır.
Example
[jerry]$ awk 'BEGIN { printf "Percentags = %f\n", 80.66 }'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
Percentags = 80.660000
% g ve% G
% E veya% f dönüşümünü (hangisi daha kısaysa) kullanır ve anlamlı olmayan sıfırlar bastırılır.
Example
[jerry]$ awk 'BEGIN { printf "Percentags = %g\n", 80.66 }'
Output
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Percentags = 80.66
%G format kullanır %E % e yerine.
Example
[jerry]$ awk 'BEGIN { printf "Percentags = %G\n", 80.66 }'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
Percentags = 80.66
%Ö
İşaretsiz sekizlik bir sayı basar.
Example
[jerry]$ awk 'BEGIN { printf "Octal representation of decimal number 10 = %o\n", 10}'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
Octal representation of decimal number 10 = 12
% u
İşaretsiz bir ondalık sayı yazdırır.
Example
[jerry]$ awk 'BEGIN { printf "Unsigned 10 = %u\n", 10 }'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
Unsigned 10 = 10
% s
Bir karakter dizisi yazdırır.
Example
[jerry]$ awk 'BEGIN { printf "Name = %s\n", "Sherlock Holmes" }'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
Name = Sherlock Holmes
% x ve% X
İşaretsiz bir onaltılık sayı basar. %X format, küçük harf yerine büyük harfler kullanır.
Example
[jerry]$ awk 'BEGIN {
printf "Hexadecimal representation of decimal number 15 = %x\n", 15
}'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
Hexadecimal representation of decimal number 15 = f
Şimdi% X kullanalım ve sonucu gözlemleyelim -
Example
[jerry]$ awk 'BEGIN {
printf "Hexadecimal representation of decimal number 15 = %X\n", 15
}'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
Hexadecimal representation of decimal number 15 = F
%%
Tek bir % karakter ve hiçbir bağımsız değişken dönüştürülmez.
Example
[jerry]$ awk 'BEGIN { printf "Percentags = %d%%\n", 80.66 }'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
Percentags = 80%
% İle İsteğe Bağlı Parametreler
İle % aşağıdaki isteğe bağlı parametreleri kullanabiliriz -
Genişlik
Alan, width. Varsayılan olarak, alan boşluklarla doldurulur, ancak 0 bayrağı kullanıldığında, sıfırlarla doldurulur.
Example
[jerry]$ awk 'BEGIN {
num1 = 10; num2 = 20; printf "Num1 = %10d\nNum2 = %10d\n", num1, num2
}'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
Num1 = 10
Num2 = 20
Lider Sıfırlar
Baştaki sıfır, çıktının boşluklar yerine sıfırlarla doldurulması gerektiğini belirten bir bayrak görevi görür. Lütfen bu bayrağın yalnızca alan yazdırılacak değerden daha geniş olduğunda bir etkiye sahip olduğunu unutmayın. Aşağıdaki örnek bunu açıklamaktadır -
Example
[jerry]$ awk 'BEGIN {
num1 = -10; num2 = 20; printf "Num1 = %05d\nNum2 = %05d\n", num1, num2
}'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
Num1 = -0010
Num2 = 00020
Sola Yaslama
İfade, alanı içinde sola dayalı olmalıdır. Girdi dizesi belirtilen karakter sayısından azsa ve sola yaslanmasını istiyorsanız, yani sağa boşluklar ekleyerek,% 'den hemen sonra ve sayıdan önce bir eksi simgesi (-) kullanın.
Aşağıdaki örnekte, AWK komutunun çıktısı, SATIRININ SONU ($) karakterini görüntülemek için cat komutuna aktarılmıştır.
Example
[jerry]$ awk 'BEGIN { num = 10; printf "Num = %-5d\n", num }' | cat -vte
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
Num = 10 $
Önek İşareti
Değer pozitif olsa bile, sayısal değerlerin önüne her zaman bir işaret koyar.
Example
[jerry]$ awk 'BEGIN {
num1 = -10; num2 = 20; printf "Num1 = %+d\nNum2 = %+d\n", num1, num2
}'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
Num1 = -10
Num2 = +20
Hash
% O için baştaki sıfır sağlar. % X ve% X için, yalnızca sonuç sıfır değilse, sırasıyla başına 0x veya 0X sağlar. % E,% E,% f ve% F için sonuç her zaman bir ondalık nokta içerir. % G ve% G için, sondaki sıfırlar sonuçtan kaldırılmaz. Aşağıdaki örnek bunu açıklamaktadır -
Example
[jerry]$ awk 'BEGIN {
printf "Octal representation = %#o\nHexadecimal representaion = %#X\n", 10, 10
}'
Bu kodu çalıştırdığınızda şu sonucu alırsınız -
Output
Octal representation = 012
Hexadecimal representation = 0XA