1#!/bin/rc 2 3# extract pages $OLIST from postscript on stdin 4 5if(~ $OLIST '') 6 exec cat 7 8awk ' 9BEGIN { 10 x=ENVIRON["OLIST"]; 11 gsub(/^-o/, "", x); 12 na = split(x, a, ","); 13 header = 1; 14 goodpage = 0; 15} 16 17header || goodpage { 18 print 19} 20 21/^%%EndSetup[ ]*$/ { header = 0; next } 22 23/^%%Page:/ { 24 header = 0; 25 p=$2+0; 26 goodpage = 0; 27 for(i=1; i<=na; i++){ 28 if(aa=match(a[i], "-")){ 29 low=substr(a[i], 1, RSTART); 30 high=substr(a[i], RSTART+RLENGTH); 31 if(low == "") 32 low = 0; 33 else 34 low = low+0; 35 if(high == "") 36 high = 100000; 37 else 38 high = high+0; 39 if(low <= p && p <= high){ 40 goodpage = 1; 41 break; 42 } 43 }else{ 44 if(a[i] == p){ 45 goodpage = 1; 46 break; 47 } 48 } 49 } 50} 51 52/^%%EndPage[ ]*$/ { 53 goodpage = 0; 54} 55 56/^%%Trailer[ ]*$/ { 57 goodpage = 1; 58} 59 60' 61