Effective AWK Programming 4e by Arnold Robbins