Thanks to e36freak on #awk
-#!/usr/bin/awk -f
+#!/usr/bin/sh -e
# Fortune implementation in awk
-BEGIN {
- "date +%N" | getline time
- srand(time)
- "grep '%' " ARGV[1] " | wc -l" | getline n
- line = int(rand() * n)
+awk '$1 == "%" {
+ sub(/%/, "")
+ ++f
}
-/%/ {
- if (p) {
- exit
- }
- z++
- next
+{
+ fortunes[f] = fortunes[f] (length(fortunes[f])?"\n":"") $0
}
-z == line {
- print $0
- p = 1
-}
+END {
+ "date +%N" | getline time
+ srand(time)
+ print fortunes[int(rand() * f) + 1]
+}' ${1:-"/usr/share/fortune/cookie"}