【问题标题】:How do I read an input file, modify its contents and save the result to an output file with node.js?如何读取输入文件、修改其内容并使用 node.js 将结果保存到输出文件?
【发布时间】:2019-03-13 11:01:42
【问题描述】:

在我的项目中,我有一个像这个程序一样的输入文件:

 var fs = require('fs');
 var str = fs.readFileSync('input.txt', 'utf8');

但我必须在终端中使用这个命令:

cat input.txt | ./prog.sh > result.txt

你能帮帮我吗,因为我没有找到如何在终端中使用这种命令在 JS 中编写通用输入文件?

【问题讨论】:

  • 您似乎正试图获取input.txt 的内容,以某种方式对其进行操作,然后获取结果并覆盖result.txt。对吗?
  • 异常@holaymolay
  • 请问您有解决方案吗? @holaymolay
  • 好的,我会发布答案
  • 我也有同样的问题@holaymolay,你已经发布答案了吗?

标签: javascript node.js terminal


【解决方案1】:

以下代码允许在终端命令的入口处获取每种名称类型的文档,此代码运行良好:

#!/usr/bin/env 节点

let chunk = "";

process.stdin.on("data", data => {
    chunk += data.toString();
});

process.stdin.on("end", () => {
    chunk.replace(/^\s*[\r\n]/gm,"").split(/\s+/).forEach(function (s) {
        process.stdout.write(
        s === 'bob'
        ? 'boy \n'
        : s === 'alicia'
           ? 'girl\n'
           : s === 'cookie'
               ? 'dog \n'
               : 'unknown \n');
    });
});

我们可以使用以下命令正确执行它: cat input.txt | /prog2.js > result.txt

【讨论】:

    【解决方案2】:

    这应该完全覆盖 result.txt 文件,或者如果它不存在则重新创建它。

    const fs = require('fs');
    
    const inputFile = "./input.txt"; 
    const outputFile = "./result.txt";
    
    var str = fs.readFileSync('input.txt', 'utf8').toString();
    
    var prog = (fileStr) => {
      let modifiedStr = fileStr.trim() + " !!!modified!!!"; // do something to modify the string
      return modifiedStr;
    };
    
    let fileContents = prog(str);
    
    fs.writeFile(outputFile, fileContents, function(err){
      if (err) throw err;
      console.log('string saved to ' + outputFile);
    });
    

    【讨论】:

    • 在这种情况下,输入文件,需要始终称为“input.txt”,我不知道我们如何在JS中编写代码以获取所有类型的输入,不同的名称输入,请问我们如何编码,您有什么想法吗?
    • @cpeUser2018 是的,但你应该更清楚你需要什么。随机文件是否上传到文件夹?他们总是.txt 文件吗?关于输入文件的位置,我需要知道什么?
    • @cpeUser2018 还有,你想通过 prog() 运行文件夹中的每个文件吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    • 2020-10-30
    • 2016-12-31
    • 2011-03-12
    • 2019-07-17
    相关资源
    最近更新 更多