Uważaj tutaj; po prostu ich catting skończy się mieszaniem wyników w sposób, którego możesz nie chcieć: na przykład, jeśli są to pliki dziennika, prawdopodobnie tak naprawdę nie chcesz linii od jednej wstawionej w połowie linii od drugiej. Jeśli to w porządku, to
tail -f / tmp / p1 / tmp / p2> / tmp / output
będzie działać. Jeśli to nie jest w porządku, musisz znaleźć coś, co spowoduje buforowanie linii i wyświetli tylko pełne linie. Syslog to robi, ale nie jestem pewien, co jeszcze może być.
EDYCJA: optymalizacja dla niebuforowanego odczytu i nazwanych potoków:
uznanie / tmp / p1, / tmp / p2, / tmp / p3 za nazwane potoki, utworzone przez „mkfifo / tmp / p N ”
tail -q -f / tmp / p1 / tmp / p2 | awk '{print 0 $> "/ tmp / p3"; close („/ tmp / p3”); fflush ();} '&
teraz w ten sposób możemy odczytać wyjście o nazwie potok „/ tmp / p3” niebuforowane przez:
tail -f / tmp / p3
jest mały rodzaj błędu, musisz „zainicjować” 1. wejściowy potok / tmp / p1 przez:
echo -n> / tmp / p1
aby ogon zaakceptował najpierw dane z 2. rury / tmp / p2 i nie czekał, aż coś dojdzie do / tmp / p1. może nie być tak, jeśli jesteś pewien, że / tmp / p1 otrzyma dane wejściowe jako pierwsze.
Potrzebna jest również opcja -q, aby tail nie drukował śmieci o nazwach plików.