Будьте обережні тут; просто їх котирування призведе до змішування результатів способами, які ви можете не захотіти: наприклад, якщо вони є файлами журналів, ви, мабуть, не хочете, щоб рядок з однієї, вставленої на півдорозі через лінію від іншого. Якщо це нормально, значить
хвіст -f / tmp / p1 / tmp / p2> / tmp / вихід
буду працювати. Якщо це не нормально, то вам доведеться знайти щось, що дозволить зробити буферизацію ліній та вивести лише повні рядки. Syslog це робить, але я не впевнений, що ще може.
EDIT: оптимізація для небуферизованого зчитування та названих труб:
розглядаючи / tmp / p1, / tmp / p2, / tmp / p3 як названі труби, створені "mkfifo / tmp / p N "
хвіст -q -f / tmp / p1 / tmp / p2 | awk '{print $ 0> "/ tmp / p3"; закрити ("/ tmp / p3"); fflush ();} '&
тепер цим способом ми можемо читати вихідну назву труби "/ tmp / p3", нерозподілену :
хвіст -f / tmp / p3
є невелика помилка сортування, вам потрібно "ініціалізувати" 1-у вхідну трубу / tmp / p1:
echo -n> / tmp / p1
для того, щоб хвіст першим прийняв вхід з 2-ї труби / tmp / p2 і не чекати, поки щось прийде в / tmp / p1. це може бути не так, якщо ви впевнені, що / tmp / p1 спочатку отримає вхід.
Також опція -q потрібна для того, щоб хвіст не друкував сміття про назви файлів.