将字符串附加到 Sys.command 输出的每一行

Attach string to each line of Sys.command output

在使用异步库的一个终端中同时执行 2 个作业时,最好区分哪个消息来自哪个作业。
有没有办法在第三方应用程序执行期间在 Sys.command 的每行输出的开头附加一个手动字符串? 例如:
工作 1:消息 1
工作 1:消息 2
工作 2:消息 1
我已经看到使用 Unix.open_process_in 重定向输出的示例,但是,它会与 Async 一起工作吗?

我不确定您设置的哪一部分是第三方的。如果您可以控制命令行,并且您 运行 在某种类 Unix 系统上,您可以通过 sed 发送输出来粗略估计您想要的内容:

job1-command 2>&1 | sed -u 's/^/Job 1: /'

从 unix 命令行看起来是这样的:

$ date 2>&1 | sed -u 's/^/Job 1: /'
Job 1: Thu Jul  7 18:54:04 PDT 2016
$ date erroneous 2>&1 | sed -u 's/^/Job 1: /'
Job 1: date: illegal time format

-u 标志使输出响应更快(它关闭缓冲)。在某些系统上(如 OS X),-l 标志会执行此操作。

如果要将标准输出和标准错误分开,事情会变得更复杂。

对于您想要的东西来说,这可能太粗糙了,但希望对您有所帮助。