GNU/Linux >> Belajar Linux >  >> Linux

9 Fungsi Built-in Awk yang Kuat untuk Numerik

Mirip dengan variabel bawaan awk, awk juga memiliki banyak fungsi bawaan untuk numerik, string, input , dan operasi keluaran. Awk memiliki tiga jenis kategori fungsi bawaan tingkat tinggi berikut.

  1. Fungsi bawaan untuk operasi numerik
  2. Fungsi bawaan untuk operasi String
  3. Fungsi bawaan untuk operasi Input Output


Bagi mereka yang baru mengenal awk, silakan merujuk ke seri contoh awk kami yang sedang berlangsung, di mana kami membahas tentang — pengenalan awk, variabel awk, dan operator awk.

Dalam artikel ini, mari kita tinjau fungsi bawaan Numerik awk.

1. Fungsi awk int(n)

fungsi int() memberi Anda bagian integer dari argumen yang diberikan. Ini menghasilkan bagian bilangan bulat terendah dari n yang diberikan. n adalah bilangan dengan atau tanpa floating point. Jika Anda memberikan bilangan bulat sebagai argumen, fungsi ini mengembalikan hal yang sama. Untuk angka floating point, itu terpotong.

Contoh

$ awk 'BEGIN{
print int(3.534);
print int(4);
print int(-5.223);
print int(-5);
}'
3
4
-5
-5

2. Fungsi log awk(n)

log() fungsi menyediakan logaritma natural dari argumen yang diberikan n. log() mengembalikan nilai logaritma hanya jika n adalah bilangan positif. Jika Anda memberikan nomor yang tidak valid (bahkan negatif), itu akan menimbulkan kesalahan.

Contoh

$ awk 'BEGIN{
print log(12);
print log(0);
print log(1);
print log(-1);
}'
2.48491
-inf
0
nan

Pada output di atas, Anda dapat mengidentifikasi bahwa log(0) adalah tak terhingga yang ditunjukkan sebagai -inf, dan log(-1) memberi Anda kesalahan nan (Not a Number)

3. Fungsi awk sqrt(n)

fungsi sqrt memberikan akar kuadrat positif untuk bilangan bulat n yang diberikan. Fungsi ini juga menerima bilangan positif, dan mengembalikan kesalahan nan jika Anda memberikan bilangan negatif sebagai argumen.

Contoh

$ awk 'BEGIN{
print sqrt(16);
print sqrt(0);
print sqrt(-12);
}'
4
0
nan

4. Fungsi Awk exp(n)

fungsi exp memberikan e pangkat n.

Contoh

$ awk 'BEGIN{
print exp(123434346);
print exp(0);
print exp(-12);
}'
inf
1
6.14421e-06

Pada output di atas, untuk exp(1234346), ini memberi Anda output tak terhingga, karena ini di luar jangkauan.

5. Fungsi awk sin(n)

fungsi sin() memberikan nilai sinus n, dengan n dalam radian.

Contoh

$ awk 'BEGIN {
print sin(90);
print sin(45);
}'
0.893997
0.850904

6. Fungsi awk cos(n)

cos() mengembalikan nilai kosinus n, dengan n dalam radian.

Contoh

$ awk 'BEGIN {
print cos(90);
print cos(45);
}'
-0.448074
0.525322

7. Fungsi awk atan2(m,n)

Fungsi ini memberi Anda tangen busur m/n dalam radian.

Contoh

$ awk 'BEGIN {
print atan2(30,45);

}'
0.588003

8. Fungsi Awk rand()

rand() digunakan untuk menghasilkan angka acak antara 0 dan 1. Itu tidak pernah mengembalikan 0 dan 1. Itu selalu mengembalikan nilai antara 0 dan 1. Angka acak dengan dalam satu awk run, tetapi dapat diprediksi dari run ke run. Awk menggunakan beberapa algoritma untuk menghasilkan angka acak. Karena algoritme ini tetap, angkanya dapat diulang.

Contoh

Contoh berikut menghasilkan 1000 angka acak antara 0 hingga 100 dan menunjukkan seberapa sering setiap angka digunakan

$cat rand.awk
BEGIN {
while(i<1000)
{
	n = int(rand()*100);
	rnd[n]++;
	i++;
}
for(i=0;i<=100;i++) {
	print i,"Occured", rnd[i], "times";
}
}
$

Sisipkan beberapa output dari skrip di atas di sini.

$awk -f rand.awk
0 Occured 6 times
1 Occured 16 times
2 Occured 12 times
3 Occured 6 times
4 Occured 13 times
5 Occured 13 times
6 Occured 8 times
7 Occured 7 times
8 Occured 16 times
9 Occured 9 times
10 Occured 6 times
11 Occured 9 times
12 Occured 17 times
13 Occured 12 times

Dari output di atas, yakinlah bahwa fungsi rand() dapat menghasilkan angka yang berulang dengan sangat sering.

9. Fungsi Awk srand(n)

srand() digunakan untuk menginisialisasi generasi acak dengan argumen yang diberikan n. Sehingga setiap kali eksekusi program dimulai, ia mulai menghasilkan angka dari n. Jika tidak ada argumen yang diberikan, ia menggunakan waktu dalam sehari untuk menghasilkan benih.

Contoh. Hasilkan 5 nomor acak mulai dari 5 hingga 50

$cat srand.awk
BEGIN {
#initialize the seed with 5.
srand(5);
# Totally I want to generate 5 numbers.
total=5;
#maximum number is 50.
max=50;
count=0;
while(count < total) {
	rnd = int(rand() * max);
	if ( array[rnd] == 0 ) {
		count++;
		array[rnd]++;
	}
}
for ( i=5; i<=max; i++) {
	if ( array[i] )
		print i;
}
}

Dalam srand.awk ini, menggunakan fungsi rand() , buat angka dan kalikan dengan nilai maks untuk menghasilkan angka dengan maksimal 50, dan periksa apakah angka acak yang dihasilkan sudah ada di array, jika tidak ada, kenaikan indeks dan serta jumlah loop kenaikan. sehingga menghasilkan 5 angka seperti ini dan terakhir di perulangan for dari angka minimum ke maksimum, dan hanya mencetak indeks yang memiliki nilai tersebut.

Berikut adalah output dari script di atas

$ awk -f  srand.awk
9
15
26
37
39

Linux
  1. Tutorial Pemrograman Linux C Bagian 18:Fungsi rekursif

  2. Nix – Manajer Paket yang Kuat untuk Linux dan Unix

  3. Fungsi Dalam Variabel Shell?

  1. TagSpaces – Pengatur File Berorientasi Tag yang Kuat untuk Linux

  2. Cara Membuat dan Memanggil Fungsi di Bash

  3. 8 Variabel Bawaan Awk yang Kuat – FS, OFS, RS, ORS, NR, NF, FILENAME, FNR

  1. Bash Seri Pemula #9:Menggunakan Fungsi di Bash

  2. Apa aturan untuk pengidentifikasi yang valid (mis. Fungsi, vars, dll) di Bash?

  3. Pemisah bidang default untuk awk