将两个终端的输出并排记录在一个文件中

时间:2016-01-25 19:34:56

标签: bash shell logging io-redirection iterm

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

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

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

输出可能如下所示:

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

它不需要与上面完全相同的格式,但至少应该清楚,当测试运行时,那时的温度样本是什么。输出不必是实时输出。如果以后整理它也没关系。

1 个答案:

答案 0 :(得分:0)

试试这个:

#!/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

问候。