Skip to content

Instantly share code, notes, and snippets.

@mishafrenkel
Last active July 25, 2019 03:19
Show Gist options
  • Select an option

  • Save mishafrenkel/b56ba957bc5ca994d07fdd58e29bb1b1 to your computer and use it in GitHub Desktop.

Select an option

Save mishafrenkel/b56ba957bc5ca994d07fdd58e29bb1b1 to your computer and use it in GitHub Desktop.
var grep = function (what, where, callback) {
var exec = require('child_process').exec;
exec("grep " + what + " " + where + " -nrH", function (err, stdin, stdout) {
var list = {}
var results = stdin.split('\n');
// remove last element (it’s an empty line)
results.pop();
for (var i = 0; i < results.length; i++) {
var eachPart = results[i].split(':') //file:linenum:line
list[eachPart[0]] = []
}
for (var i = 0; i < results.length; i++) {
var eachPart = results[i].split(':') //file:linenum:line
var details = {}
var filename = eachPart[0]
details['line_number'] = eachPart[1]
eachPart.shift()
eachPart.shift()
details['line'] = eachPart.join(':')
list[filename].push(details)
}
var results = []
var files = Object.keys(list)
for (var i = 0; i < files.length; i++) {
results.push({ 'file': files[i], 'results': list[files[i]] })
}
callback(results)
});
}
grep(process.argv[2], process.argv[3], function (list) {
for (let i = 0; i < list.length; i++) {
console.log(list[i]);
}
});
module.exports = grep;
/*
///////////////////// TO EXECUTETE THIS SCRIPT IN A SHELL///////////////////////
Input the following:
node nameOfScriptFile.js 'searchTerm' 'directoryToSearch'
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment