まあ、明らかに、mawkにはstrftime関数がありません。
私はここにmawkを持っていないので、テストされていません:
awk -f script -v the_year=$(date "+%Y") inputFile
そしてscript
持っている(2つの正規表現を組み合わせる:
$2 ~ /^[HB].*n$/ { print the_year }
年がなんらかの理由で$0から来る場合は、文字列からそれを解析できるはずです。あなたの入力についての詳細を教えてください。
編集
入力は、「12768 Ashwari F20111985」のようないくつかの行で構成されています。基本的に、BまたはHで始まり、nで終わる名前を持つすべてのものをフィルタリングする必要があります。さらに、フィルタリングされた各学生の年齢を計算し、グループ全体の平均年齢を調べる必要があります。
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