examples - awk unix
Usando la funciĆ³n strftime en mawk (2)
Bueno, claramente, mawk no tiene una función strftime.
No tengo mawk aquí, tan no probado:
awk -f script -v the_year=$(date "+%Y") inputFile
y script
tiene (combinando las dos expresiones regulares:
$2 ~ /^[HB].*n$/ { print the_year }
Si el año debería venir de $ 0 de alguna manera, entonces debería ser capaz de analizarlo fuera de la cadena. Danos más detalles sobre tu entrada.
EDITAR
la entrada está hecha de varias filas que se ven así: "12768 Ashwari F 20 11 1985". Básicamente tengo que filtrar todos aquellos con un nombre que comienza con B o H y termina con n. Además, tengo que calcular la edad de cada estudiante filtrado y conocer la edad promedio de todo el grupo.
awk -v this_year=$(date +%Y) -v today=$(date +%Y%m%d) ''
$2 ~ /^[BH].*n$/ {
age = this_year - $6
if (today < $6 $5 $4) { age-- } # I assume those fields are the birthday
total_age += age
count ++
print $2 " is " age " years old"
}
END {
print "average age = " total_age/count
}
'' inputFile
Estoy intentando crear una secuencia de comandos AWK que filtrará el archivo de entrada de acuerdo con algún patrón, y usaré la función strftime () para algunos cálculos.
($2 ~ /^[HB]/ && $2 ~ /n$/){
print strftime("%Y")
}
El intérprete en uso es mawk. Al activar este script usando este comando:
awk -f script3 inputFile
Me aparece el error: "función strftime nunca definida"
La instalación de GAWK le devolverá el tiempo de funcionamiento de la función que le falta nativamente en awk.
Con Ubuntu 11.10 o distribución simiar, emitirías el siguiente comando para obtener el GAWK
sudo apt-get install gawk
También puede usarlo en gawk, sin embargo, no tiene que hacerlo y simplemente puede seguir adelante con su script awk original.