【问题标题】:Log output from two terminals side by side in a single file在一个文件中并排记录来自两个终端的输出
【发布时间】:2016-01-25 19:34:56
【问题描述】:

我在 Mac 上的 iTerm 的两个终端上运行两个脚本。在一个终端上正在运行一系列测试,第二个终端以重复的时间间隔连续打印温度。两个脚本之间没有同步。

  Terminal1     Terminal2
    Test1         50C
                  51C
                  52C
    Test2         49C
                  53C

我想做的是并排捕获这两个输出并将其保存到文件中。

输出可能如下所示:

    Test1         50C
    Test1         51C
    Test1         52C
    Test2         49C
    Test2         53C

它不需要与上面完全相同的格式,但至少应该清楚,当测试运行时,当时的温度样本是多少。输出不必是实时输出。以后整理就好了。

【问题讨论】:

  • 您需要实时输出,还是希望事后从日志文件中整理?
  • 我不需要直播。以后有就好了。
  • 如果你只是 >> 两个输出到同一个文件呢?
  • 我不能这样做,因为在运行测试的终端中可能会有稳定的输出流,这会扰乱温度并以随意的方式进行测试。

标签: bash shell logging io-redirection iterm


【解决方案1】:

试试这个:

#!/bin/bash

first=$1
second=$2

actual=""
while IFS= read -r lineA && IFS= read -r lineB <&3; do
    if [[ -z "${lineA// }" ]]; then
        echo "$actual   $lineB"
    else
        echo "$lineA    $lineB"
        actual=$lineA
    fi
done <$first 3<$second

其中 $1 和 $2 是参数传递的两个文件。

用法:

./join.sh first.txt second.txt

问候。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    相关资源
    最近更新 更多