#!/bin/sh # # Search news articles for a regular expression, and display matching ones # [ $# -lt 2 ] && { echo "usage: sn groups pattern" >&2; exit 1; } readnews -i -p -n "$1" | nawk ' function pbuf() { for (i = 0; i < n; i++) print buf[i] } BEGIN { m = n = 0 } /^-----------/ { hs = $0; next } /^Newsgroup / && hs { getline tmp if (tmp ~ /^-----------/) getline else {if (n) {buf[n++] = hs; buf[n++] = $0; buf[n++] = tmp}} hs = ""; next } /^Article [0-9]+ of [0-9]+ \([^ ]+\) / { if (m) pbuf() m = n = 0; buf[n++] = $0; next } /'"$2"'/ { if (n) m = 1 } { if (n) buf[n++] = $0; hs = "" } END { if (m) pbuf() }' | ${PAGER:-more} .