#!/bin/rc # extract pages $OLIST from postscript on stdin if(~ $OLIST '') exec cat awk 'BEGIN { x=ENVIRON["OLIST"]; gsub(/^-o/, "", x); na = split(x, a, ","); header = 1; goodpage = 0;} header || goodpage { print} /^%%EndSetup[ ]*$/ { header = 0; next } /^%%Page:/ { header = 0; p=$2+0; goodpage = 0; for(i=1; i<=na; i++){ if(aa=match(a[i], "-")){ low=substr(a[i], 1, RSTART); high=substr(a[i], RSTART+RLENGTH); if(low == "") low = 0; else low = low+0; if(high == "") high = 100000; else high = high+0; if(low <= p && p <= high){ goodpage = 1; break; } }else{ if(a[i] == p){ goodpage = 1; break; } } }} /^%%EndPage[ ]*$/ { goodpage = 0;} /^%%Trailer[ ]*$/ { goodpage = 1;} '
#!/bin/rc
# extract pages $OLIST from postscript on stdin
if(~ $OLIST '')
exec cat
awk '
BEGIN {
x=ENVIRON["OLIST"];
gsub(/^-o/, "", x);
na = split(x, a, ",");
header = 1;
goodpage = 0;
}
header || goodpage {
print
}
/^%%EndSetup[ ]*$/ { header = 0; next }
/^%%Page:/ {
header = 0;
p=$2+0;
goodpage = 0;
for(i=1; i<=na; i++){
if(aa=match(a[i], "-")){
low=substr(a[i], 1, RSTART);
high=substr(a[i], RSTART+RLENGTH);
if(low == "")
low = 0;
else
low = low+0;
if(high == "")
high = 100000;
else
high = high+0;
if(low <= p && p <= high){
goodpage = 1;
break;
}
}else{
if(a[i] == p){
goodpage = 1;
break;
}
}
}
}
/^%%EndPage[ ]*$/ {
goodpage = 0;
}
/^%%Trailer[ ]*$/ {
goodpage = 1;
}
'