How to read from stdin line by line in Node

前端 未结 8 1438
闹比i
闹比i 2020-11-28 01:47

I\'m looking to process a text file with node using a command line call like:

node app.js < input.txt

Each line of the file needs to be proce

8条回答
  •  日久生厌
    2020-11-28 02:16

    In my case the program (elinks) returned lines that looked empty, but in fact had special terminal characters, color control codes and backspace, so grep options presented in other answers did not work for me. So I wrote this small script in Node.js. I called the file tight, but that's just a random name.

    #!/usr/bin/env node
    
    function visible(a) {
        var R  =  ''
        for (var i = 0; i < a.length; i++) {
            if (a[i] == '\b') {  R -= 1; continue; }  
            if (a[i] == '\u001b') {
                while (a[i] != 'm' && i < a.length) i++
                if (a[i] == undefined) break
            }
            else R += a[i]
        }
        return  R
    }
    
    function empty(a) {
        a = visible(a)
        for (var i = 0; i < a.length; i++) {
            if (a[i] != ' ') return false
        }
        return  true
    }
    
    var readline = require('readline')
    var rl = readline.createInterface({ input: process.stdin, output: process.stdout, terminal: false })
    
    rl.on('line', function(line) {
        if (!empty(line)) console.log(line) 
    })
    

提交回复
热议问题