Можно ли отслеживать терминал для конкретного вывода?

#node.js #terminal #console #stdout #webots

Вопрос:

Я использую NodeJS для запуска веб-ботов с помощью командной строки и перенаправил stdout на терминал узла. Моя проблема в том, что я хочу вызвать событие на основе журнала консоли. Я попытался перенаправить вывод команды в другой файл, но это, похоже, не сработало.

Это вывод на консоль

 INFO: sumo_example_two: Starting controller: python.exe -u sumo_example_two.py
INFO: sumo_supervisor: Starting controller: python.exe -u sumo_supervisor.py
robot2
INFO: sumo_example_one: Terminating.
INFO: sumo_example_two: Terminating.
INFO: sumo_supervisor: Terminating.
stdout:
 

Я хочу извлечь «robot2».

Ответ №1:

Я только что протестировал, и следующий фрагмент кода отлично работает для меня:

 const { spawn } = require('child_process');
const ls = spawn('webots', ['--stdout']);

ls.stdout.on('data', (data) => {
  console.log(`stdout: ${data}`);

  // Process `data` as you prefer, something like
  //
  //   if (data.includes('robot2')) {
  //     something()
  //   }
});