tpsextract - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       tpsextract (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 '