La unidad Awk Actions es la sintaxis Awk

Uso de la sintaxis awk

1. Imprimir y estados de cuenta Printf

Datos de prueba emp.dat

A125 Jenny 100 210
A341 Dan 110 215
P158 Max 130 209
P148 John 125 220
A123 Linda 95 210

Declaración de impresión

BEGIN{
	print "start"
	print "----------------------------"
}

{
	print $0
}

END{
	print "----------------------------"
	print "end"
}

resultado:


[root@VM-0-6-centos mnt]# awk -f test.awk emp.dat
start
----------------------------
A125 Jenny 100 210
A341 Dan 110 215
P158 Max 130 209
P148 John 125 220
A123 Linda 95 210
----------------------------
end

Salida con
formato de declaración 2.printf

BEGIN{
	printf("start\n")
	printf("----------------------------\n")
}

{
	# printf("%s\n",$4)
	# printf("%5s\n",$4)
	# printf("%d\n",$4)
	# printf("%5d\n",$4)
	# printf("%f\n",$4)
	printf("%.4f\n",$4)
}

END{
	printf("----------------------------\n")
	printf("end\n")
}

El resultado es:

[root@VM-0-6-centos mnt]# awk -f test.awk emp.dat
start
----------------------------
210.0000
215.0000
209.0000
220.0000
210.0000
----------------------------
end

2. Declaración If

  1. if declaración
    a. Requisitos: si los resultados están calificados
BEGIN{
	score=79

	if(score>=60){
		print "yes"
	}

	if(score<60){
		print "no"
	}
}
  1. if ... else enunciado
    a. Requisito: si el resultado es calificado
BEGIN{
	score=59

	if(score>=60){
		print "yes"
	}else{
		print "no"
	}
}

b. Demanda: si el género es masculino o femenino

BEGIN{
	sex="girl"

	if(sex=="boy"){
		print "男"
	}else{
		print "女"
	}
}
  1. if ... else if ... else enunciado
    a. Requisito: ¿Qué grado es el grado A, B, C o D? D grado inferior a 60, grado C 60-79, grado B 80-89, grado A superior 90
BEGIN{
	score=92

	if(score>=90){
		print "A"
	}else if(score>=80 && score<90){
		print "B"
	}else if(score>=60 && score<80){
		print "C"
	}else{
		print "D"
	}
}

# Código optimizado

BEGIN{
	score=92

	if(score>=90){
		print "A"
	}else if(score>=80){
		print "B"
	}else if(score>=60){
		print "C"
	}else{
		print "D"
	}
}

Tres. Declaración while y Do While

  1. Enunciado while
    Calcular la suma acumulada de 1-100 números
    a. Ordinario
BEGIN{
	num=100
	tot=0

	while(num>0){
		tot+=num
		num--
	}

	print tot
}

b. Optimización

BEGIN{
	num=100

	while(num>0){
		tot+=num--
	}

	print tot
}
  1. instrucción do while
    Presione y o n en el sistema para salir; de lo contrario, siempre se ejecutará "Enter y o n"
    a. Normal
BEGIN{
	print "Enter y or n"
	getline data

	while( data !~ /^[yn]$/){
		print "Enter y or n"
		getline data
	}
}

b. Optimización

BEGIN{
	do{
		print "Enter y or n"
		getline data
	} while( data !~ /^[yn]$/)
}

Cuatro. Por declaración

  1. para la declaración
    #Requisito: Calcule la suma acumulada de 1-100 números
BEGIN{
	for(i=1;i<=100;i++){
		tot+=i
	}
	
	print tot
}
  1. para en la declaración
    #Requirement: atraviesa la matriz
BEGIN{
	arr[0]="linux"
	arr[1]="php"
	arr[2]="javascript"
	arr[3]="java"
	arr[4]="python"

	for(i in arr){
		print i,arr[i]
	}
}

Cinco. Declaraciones de Continuar y Romper

  1. Continuar declaración
    # Requisito: omitir incluso 2 y 4
BEGIN{
	#1,2,3,4,5

	for(i=1;i<=5;i++){
		if(i%2==0){
			continue
		}
		tot+=i
	}

	print tot
}
  1. sentencia break
    #requiere detener el ciclo for cuando i es igual a 3
BEGIN{
	#1,2,3,4,5

	for(i=0;i<=5;i++){
		if(i==3){
			break
		}
		tot+=i
	}

	print tot
}

6. Eliminar declaración

# Eliminar método de datos de matriz (matriz)

BEGIN{
	arr[0]="linux"
	arr[1]="php"
	arr[2]="java"

	# delete arr[0]
	delete arr
	print arr[2]
}

Seven. Declaración de salida

#Puede detener la ejecución del script awk

#Primer párrafo

BEGIN{
	print 1
	print 2
	exit
	print 3
	print 4
	print 5
}

#Segundo parrafo

BEGIN{
	for(i=0;i<5;i++){
		if(i==1){
			exit
		}
		print i
	}

	print 2
	print 3
}

Supongo que te gusta

Origin blog.csdn.net/weixin_39218464/article/details/112144339
Recomendado
Clasificación