'awk' komutunu kullanarak bir dizi sütun nasıl yazdırılır

How Print Range Columns Using Awk Command



'awk' komutu, Linux'ta tablo verilerinden bir dizi sütunu yazdırmak için kullanılabilecek birçok komuttan biridir. 'awk' komutu, 'awk' komut dosyası yürütülerek doğrudan terminalden kullanılabilir. Bu öğreticide, tablo verilerinden bir dizi sütunu nasıl yazdıracağınızı göstereceğiz.

Örnek 1: Bir komut çıktısından bir dizi sütun yazdırın

Aşağıdaki komut, komut çıktısından ikinci, üçüncü ve dördüncü sütunları yazdıracaktır, 'Ls -l '. Burada sütun numaraları açıkça belirtilmiştir, ancak sonraki örnekte aynı sütun aralığını yazdırmak için daha etkili bir komut gösterilmektedir.







$ls -NS | awk '{ $2, $3, $4 }'

Aşağıdaki çıktı, yukarıdaki komut tarafından üretilir.





Örnek 2: Bir dosyadan sütun aralığını kullanarak bir dosyadan yazdırın. için döngü

Bu örnekle ve bu öğreticideki diğer örneklerle birlikte takip etmek için adında bir metin dosyası oluşturun. mark.txt aşağıdaki içerikle :





Kimlik CSE203 CSE102 CSE202
1109 78 87 79
1167 67 81 70
1190 56 61 69
1156 89 55 78
199 54 66 58

Aşağıdaki 'awk' komutu, mark.txt dosyasının ilk üç sütununu yazdıracaktır. NS için döngü sütun değerlerini yazdırmak için kullanılır ve döngü üç adım içerir. NS NF değişken, dosyanın toplam alan veya sütun sayısını gösterir.

$kedimark.txt
$awk '{for(i=1;i<=NF-1;i++) printf $i' '; print ''}'mark.txt

Komutun çalıştırılmasıyla aşağıdaki çıktı üretilecektir. Çıktı öğrenciyi gösterir kimlikler ve işaretleri CSE203 ve CSE102 .



Örnek 3: Başlangıç ​​ve bitiş değişkenlerini tanımlayarak sütun aralığını yazdırın

Aşağıdaki 'awk' komutu, 'ls -l' komut çıktısından ilk üç sütunu başlatarak yazdıracaktır. Başlangıç ve bitirme değişkenler. Burada, değerin Başlangıç değişken 1'dir ve değeri bitirme değişken 3'tür. Bu değişkenler, sütun değerlerini yazdırmak için bir for döngüsü içinde yinelenir.

$ls -NS | awk BAŞLANGIÇ { ilk = 1; son = 3 }
{ for (i = ilk; ben

Komutu çalıştırdıktan sonra aşağıdaki çıktı görünecektir. Çıktı, çıktının ilk üç sütun değerini gösterir, 'ls -l'.

Örnek 4: Biçimlendirme ile bir dosyadan bir dizi sütun yazdırın

Aşağıdaki 'awk' komutu, ilk üç sütunu yazdıracaktır. mark.txt kullanarak baskı ve çıkış alanı ayırıcısı ( OFS ). Burada for döngüsü üç adım içerir ve dosyadan sırayla üç sütun yazdırılır. OFS burada sütunlar arasına boşluk eklemek için kullanılır. (i) döngüsünün sayaç değeri, bitirme değişken, ardından bir yeni satır( ) oluşturulur.

$kedimark.txt
$awk -v Başlat=1 -v son=3 '{ for (i=başlangıç; ben<=end;i++) printf('%s%s',
$i,(i==son) ? ' ' : OFS) }'
mark.txt

Yukarıdaki komutları çalıştırdıktan sonra aşağıdaki çıktı üretilecektir.

Örnek 5: Koşullu bir ifade kullanarak bir dosyadaki sütun aralığını yazdırın

Aşağıdaki `awk` komutu, bir for döngüsü ve bir if ifadesi kullanarak bir dosyadan ilk ve son sütunları yazdıracaktır. Burada for döngüsü dört adım içerir. NS Başlangıç ve bitirme if koşulunu kullanarak dosyadan ikinci ve üçüncü sütunları çıkarmak için komut dosyasında değişkenler kullanılır. OFS değişkeni sütunlar arasına boşluk eklemek için, ORS değişkeni ise son sütunu yazdırdıktan sonra yeni satır( ) eklemek için kullanılır.

$kedimark.txt
$awk -v Başlat=2 -v son=3 '{ için (i=1; ben<=NF;i++)
if( i>=başlat && i<=end) continue;
else printf('%s%s', $i,(i!=NF) ? OFS : ORS) }'
mark.txt

Yukarıdaki komutları çalıştırdıktan sonra aşağıdaki çıktı görünecektir. Çıktı, mark.txt dosyasının ilk ve son sütunlarını gösterir.

Örnek 6: NF değişkenini kullanarak bir dosyadan sütun aralığını yazdırın

Aşağıdaki 'awk' komutu, bir NF değişkeni kullanarak dosyadaki ilk ve son sütunları yazdıracaktır. Sütun değerlerini yazdırmak için hiçbir döngü veya koşullu ifade kullanılmaz. NF, alan sayısını belirtir. mark.txt dosyasında dört sütun vardır. $(NF-3) ilk sütunu tanımlar ve $NF son sütunu belirtir.

$kedimark.txt
$awk '{baskı $(NF-3)' '$NF}'mark.txt

Yukarıdaki komutlar çalıştırılarak aşağıdaki çıktı üretilir. Çıktı, mark.txt dosyasının ilk ve son sütunlarını gösterir.

Örnek 7: substr() ve index() kullanarak bir dosyadan sütun aralığını yazdırın

index() işlevi, ikinci bağımsız değişken değeri ilk bağımsız değişken değerinde mevcutsa bir konum döndürür. substr() işlevi üç bağımsız değişken alabilir. İlk argüman bir dize değeridir, ikinci argüman başlangıç ​​konumudur ve üçüncü argüman uzunluktur. substr() öğesinin üçüncü argümanı aşağıdaki komutta atlanmıştır. 'awk' komutunda sütun 1 dolardan başladığından, index() işlevi 3 dolar döndürür ve komut 3 dolardan 4 dolara yazdırır.

$kedimark.txt
$awk '{print substr($0,index($0,$3))}'mark.txt

Yukarıdaki komutlar çalıştırılarak aşağıdaki çıktı üretilecektir.

Örnek 8: printf kullanarak bir dosyadan bir dizi sütunu sırayla yazdırın

Aşağıdaki 'awk' komutu, 10 karakter için yeterli alan ayarlayarak mark.txt dosyasının birinci, ikinci ve üçüncü sütunlarını yazdıracaktır.

$kedimark.txt
$awk '//{printf '%10s %10s %10s ',$1,$3,$2 }'mark.txt

Yukarıdaki komutlar çalıştırılarak aşağıdaki çıktı üretilecektir.

Çözüm

Komut çıktısından veya bir dosyadan sütun aralığını yazdırmanın çeşitli yolları vardır. Bu öğretici, 'awk' komutunun Linux kullanıcılarının tablo verilerinden içerik yazdırmasına nasıl yardımcı olabileceğini gösterir.