GNU/Linux >> LINUX-Kenntnisse >  >> Linux

9 leistungsstarke integrierte Awk-Funktionen für Zahlen

Ähnlich wie die eingebauten Variablen von awk hat awk auch viele eingebaute Funktionen für Zahlen, Strings und Eingaben und Ausgangsoperationen. Awk hat die folgenden drei Arten von integrierten Funktionskategorien auf hoher Ebene.

  1. Eingebaute Funktionen für numerische Operationen
  2. Integrierte Funktionen für String-Operationen
  3. Eingebaute Funktionen für Eingabe-Ausgabe-Operationen


Für diejenigen, die neu bei awk sind, lesen Sie bitte unsere laufende awk-Beispielserie, in der wir über — awk-Einführung, awk-Variablen und awk-Operatoren gesprochen haben.

Lassen Sie uns in diesem Artikel die integrierten Funktionen von awk Numeric überprüfen.

1. Awk int(n)-Funktion

Die Funktion int() gibt Ihnen den ganzzahligen Teil des angegebenen Arguments. Dies erzeugt den niedrigsten ganzzahligen Teil des gegebenen n. n ist eine beliebige Zahl mit oder ohne Fließkomma. Wenn Sie die ganze Zahl als Argument angeben, gibt diese Funktion dasselbe zurück. Bei Fließkommazahlen wird abgeschnitten.

Beispiel

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

2. Awk log(n)-Funktion

Die Funktion log() liefert den natürlichen Logarithmus des gegebenen Arguments n. log() gibt den Logarithmuswert nur zurück, wenn n eine positive Zahl ist. Wenn Sie eine ungültige Zahl (auch negative) eingeben, wird ein Fehler ausgegeben.

Beispiel

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

In der obigen Ausgabe können Sie erkennen, dass log(0) unendlich ist, was als -inf angezeigt wurde, und log(-1) gibt Ihnen den Fehler nan (Not a Number)

3. Awk sqrt(n)-Funktion

Die Funktion sqrt liefert die positive Quadratwurzel für die gegebene ganze Zahl n. Diese Funktion akzeptiert auch die positive Zahl und gibt einen Fehler zurück, wenn Sie die negative Zahl als Argument angeben.

Beispiel

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

4. Awk exp(n) Funktion

Die exp-Funktion liefert e hoch n.

Beispiel

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

In der obigen Ausgabe erhalten Sie für exp(1234346) die Ausgabe unendlich, da dies außerhalb des gültigen Bereichs liegt.

5. Awk sin(n)-Funktion

Die Funktion sin() ergibt den Sinuswert von n, wobei n im Bogenmaß angegeben ist.

Beispiel

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

6. Awk cos(n)-Funktion

cos() gibt den Kosinuswert von n zurück, wobei n im Bogenmaß angegeben ist.

Beispiel

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

7. Awk atan2(m,n) Funktion

Diese Funktion liefert den Arkustangens von m/n im Bogenmaß.

Beispiel

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

}'
0.588003

8. Awk rand()-Funktion

rand() wird verwendet, um die Zufallszahl zwischen 0 und 1 zu generieren. Es gibt niemals 0 und 1 zurück. Es gibt immer den Wert zwischen 0 und 1 zurück. Zahlen sind zufällig in einem awk-Lauf, aber von Lauf zu Lauf vorhersehbar. Awk verwendet einen Algorithmus, um die Zufallszahlen zu generieren. Da dieser Algorithmus festgelegt ist, sind die Zahlen wiederholbar.

Beispiel

Das folgende Beispiel generiert 1000 Zufallszahlen zwischen 0 und 100 und zeigt, wie oft jede Zahl verwendet wurde

$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";
}
}
$

Einige der Ausgaben des obigen Skripts hier eingefügt.

$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

Stellen Sie anhand der obigen Ausgabe sicher, dass die Funktion rand() sehr oft wiederholbare Zahlen generieren kann.

9. Awk srand(n)-Funktion

srand() wird verwendet, um die Zufallsgenerierung mit dem angegebenen Argument n zu initialisieren. Wenn also die Programmausführung beginnt, beginnt sie mit der Generierung der Zahl aus n. Wenn kein Argument angegeben wird, verwendet es die Tageszeit, um den Seed zu generieren.

Beispiel. Generiere 5 Zufallszahlen von 5 bis 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;
}
}

Generieren Sie in dieser srand.awk mithilfe der Funktion rand() die Zahl und multiplizieren Sie sie mit dem Maximalwert, um die Zahl mit dem Maximum von 50 zu erhalten, und prüfen Sie, ob die generierte Zufallszahl bereits im Array vorhanden ist, falls sie nicht vorhanden ist. Inkrementieren Sie seinen Index und inkrementieren Sie die Schleifenanzahl. so dass es 5 Zahlen wie diese generiert und schließlich in der for-Schleife von der minimalen Zahl bis zur maximalen Zahl und nur den Index druckt, der den Wert hat.

Hier ist die Ausgabe des obigen Skripts

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

Linux
  1. Bash-Anfängerserie Nr. 9:Verwenden von Funktionen in Bash

  2. TagSpaces – Ein leistungsstarker Tag-orientierter Datei-Organizer für Linux

  3. So erstellen und rufen Sie Funktionen in Bash auf

  4. 8 leistungsstarke integrierte Awk-Variablen – FS, OFS, RS, ORS, NR, NF, FILENAME, FNR

  5. Welche Regeln gelten für gültige Bezeichner (z. B. Funktionen, Variablen usw.) in Bash?

Bash-Funktionen

Shell-Scripting Teil V:Funktionen in Bash

Cmus – Ein leistungsstarker Konsolen-Musikplayer für Linux

Bash Scripting – Funktionen mit Beispielen erklärt

Regex-Tutorial für Linux-Beispiele (Sed &AWK).

grep for term und schließt einen anderen Begriff aus