psextract (793B)
1 #!/usr/local/plan9/bin/rc 2 3 # extract pages $OLIST from postscript on stdin 4 5 if(~ $OLIST '') 6 exec cat 7 8 awk ' 9 BEGIN { 10 x=ENVIRON["OLIST"]; 11 gsub(/^-o/, "", x); 12 na = split(x, a, ","); 13 header = 1; 14 goodpage = 0; 15 } 16 17 header || 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 '