2017-02-24 4 views
0

私はクライアント側から文字列を渡していますが、その文字列がそのファイルの内容の一部であれば、その行を印刷したいのですが、fsとnodejsを使って行えますか?fileとnodejsを使用してファイルから一致する文字列を取得する方法?

searvice.js

var fs = require('fs'); 
var path = require('path'); 
var async = require('async'); 
var searchStr; 

function readFile(str){ 
    searchStr = str; 
// var url = './logs/St/server1.log'; 
    fs.readFile('./logs/St/server1.log', 'utf8', function (err,data) { 
     if (err) { 
     return console.log(err); 
     } 
     console.log('Server Data',data); 
     inspectFile(data); 
    }); 
} 


function inspectFile(data) { 
    if (data.indexOf(searchStr) != -1) { 
     // do something 
     console.log('print the matching data'); 
    } 
} 

exports.readFile = readFile; 
+0

一致した行または最初の行だけをすべて印刷しますか? –

+0

はい一致するすべての行を印刷したい – hussain

答えて

1

あなたは改行でdataを分割する最初のを持っています。

function inspectFile(data) { 
    var lines = data.split('\n');    // get the lines 
    lines.forEach(function(line) {    // for each line in lines 
     if(line.indexOf(searchStr) != -1) { // if the line contain the searchStr 
      console.log(line);     // then log it 
     } 
    }); 
} 

注:これを試してみてください代わりにグローバルsearchStrを作る、あなただけinspectFileにparametterとしてそれを渡すことができます。

+0

非同期の場合にこのアプローチがどのように見えますか? – hussain

+0

@hussainあなたはasynch関数のコールバックの中から呼び出すので、うまくいくと思います。 –

+0

@hussain試しましたか? –

関連する問題