Extract data from big text file

by mowglisanu

HTML

<input type=file>
<input id=p placeholder="Enter search string">
<input type=number id=b Placeholder="Bytes before">
<input type=number id=a Placeholder="Bytes after">

JavaScript

$(document).on('change', 'input[type=file]', function(e){
	searchBlob(this.files[0]);
});


async function searchBlob(blob, text){
	var size = blob.size;
  var processed = 0;
  while (size > processed){
  	let newBlob = blob.slice(processed, processed+(size-processed>1024*1024?1024*1024:size-processed));
    let t = await newBlob.text();
    let f = t.indexOf(p.value);
    console.log(f,p.value,t)
    if (f >= 0){
    	let start = f + processed - (+b.value);
      let end = f + processed + (+a.value);
      console.log(start, end);
      let eBlob = blob.slice(start, end);
      let burl = URL.createObjectURL(eBlob);
      let l = document.createElement('a');
      l.download = 'data.json';
      l.href = burl;
      l.click();
      //return;
    }
    processed += newBlob.size;
  }
}