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
- if declaración
a. Requisitos: si los resultados están calificados
BEGIN{
score=79
if(score>=60){
print "yes"
}
if(score<60){
print "no"
}
}
- 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 "女"
}
}
- 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
- 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
}
- 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
- 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
}
- 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
- 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
}
- 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
}