Ну, ясно, что mawk не имеет функции strftime.
У меня нет mawk здесь, так что непроверенный:
awk -f script -v the_year=$(date "+%Y") inputFile
и script
имеет (объединяя два регулярных выражения:
$2 ~ /^[HB].*n$/ { print the_year }
Если год должен быть как-то равен $ 0, тогда вы сможете разобрать его вне строки. Дайте нам более подробную информацию о вашем вкладе.
EDIT
ввод состоит из нескольких строк, которые выглядят так: «12768 Ashwari F 20 11 1985».
В основном я должен отфильтровать все те, чье имя начинается с B или H и заканчивается
п. Кроме того, я должен рассчитать возраст каждого отфильтрованного студента и выяснить
средний возраст всей группы.
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