--- a/dnsfilter.c
+++ b/dnsfilter.c
@@ -41,6 +41,7 @@ int inbuflen = 0;
 iopause_fd *inio;
 int flag0 = 1;
 
+int opt_replace = 0;
 iopause_fd *io;
 int iolen;
 
@@ -51,12 +52,16 @@ char name[DNS_NAME4_DOMAIN];
 void errout(int i)
 {
   int j;
-
-  if (!stralloc_copys(&x[i].middle,":")) nomem();
-  if (!stralloc_cats(&x[i].middle,error_str(errno))) nomem();
-  for (j = 0;j < x[i].middle.len;++j)
-    if (x[i].middle.s[j] == ' ')
-      x[i].middle.s[j] = '-';
+ 
+  if (opt_replace) 
+    x[i].middle.len=0;
+  else {
+    if (!stralloc_copys(&x[i].middle,":")) nomem();
+    if (!stralloc_cats(&x[i].middle,error_str(errno))) nomem();
+    for (j = 0;j < x[i].middle.len;++j)
+      if (x[i].middle.s[j] == ' ')
+        x[i].middle.s[j] = '-';
+  }
 }
 
 int main(int argc,char **argv)
@@ -69,7 +74,7 @@ int main(int argc,char **argv)
   int j;
   int r;
 
-  while ((opt = getopt(argc,argv,"c:l:")) != opteof)
+  while ((opt = getopt(argc,argv,"c:l:r")) != opteof)
     switch(opt) {
       case 'c':
 	scan_ulong(optarg,&u);
@@ -83,8 +88,11 @@ int main(int argc,char **argv)
 	if (u > 1000000) u = 1000000;
 	xmax = u;
 	break;
+      case 'r':
+	opt_replace = 1;	  
+	break;
       default:
-	strerr_die1x(111,"dnsfilter: usage: dnsfilter [ -c concurrency ] [ -l lines ]");
+	strerr_die1x(111,"dnsfilter: usage: dnsfilter [ -c concurrency ] [ -l lines ] [-r]");
     }
 
   x = (struct line *) alloc(xmax * sizeof(struct line));
@@ -140,8 +148,13 @@ int main(int argc,char **argv)
 	else if (r == 1) {
 	  if (dns_name_packet(&x[i].middle,x[i].dt.packet,x[i].dt.packetlen) == -1)
 	    errout(i);
-	  if (x[i].middle.len)
-	    if (!stralloc_cats(&x[i].left,"=")) nomem();
+	  if (x[i].middle.len) {
+	    if (opt_replace) {
+	      if (!stralloc_copys(&x[i].left, "")) nomem();
+	    } else {
+	      if (!stralloc_cats(&x[i].left, "=")) nomem();
+	    }
+	  }
 	  x[i].flagactive = 0;
 	  --numactive;
 	}
