в Python (2.x):
import sys
pat = 'sss'
for line in open(sys.argv[1]):
if not pat in line:
print line,
continue
case_nr = line.split(pat + ' case-', 1)[1].split('-')[0]
print '**something about case{}**'.format(case_nr)
Call с Python Script_name.py input.txt> output.txt
Я лично считаю, что одно самые первые вещи, которые вы должны сделать в сценарии или приложении командной строки, или приложение, установлена система регистрации. Просто с парой повторных использованных линий вы можете войти во всех ваших приложениях Python и даже использовать различные уровни отладки :).
Я не буду базовым входить в систему в записи STDOUT в файлы с TEE, просто войдите в STDOUT, так и ваш канал регистрации. Я предполагаю, что вы можете изменить ваши сценарии Python, все ниже относится к этой ситуации. ( Прокрутите вниз для «Использование ответа TEE» :).
В Python вы можете использовать модуль для ведения журнала (проверьте регистрацию хорма в официальной документации Python: https://docs.cython.org/2/howto/logging.html ) Но к сожалению разные Процессы не могут написать в один и тот же файл (могут быть разные проталки одинакового процесса).
Итак, в этом случае вы описываете, я думаю, что базовый случай будет в системе Syslog, либо с библиотекой регистрации, либо с библиотекой Syslog ( https://docs.cython.org/2 /library/syslog.html).
Вы можете войти в локальную регистрацию Syslog. * Facility на все приложения и дайте Syslog (Rsyslog в моем случае), чтобы написать в файл:
local0.* /var/log/myapp.log
Лучше всего в этой системе является то, что вы даже можете ввести удаленные серверы системного журнала на Различные машины, не только в одном выполнении приложений.
PS: не забудьте установить политику /etc/logrotate.d/myapp, чтобы повернуть файлы журнала приложений!
Вариант TEE
Если вам все еще нужно использовать Tee
, вы пытались использовать флаг -A
для 2-го и 3-го процесса? Как указано в http://docstore.mik.ua/orelly/unix/upt/ch13_10.htm :
Команда Tee (13.9) записывает свой стандартный ввод в файл и Пишет тот же текст на свой стандартный выход. Возможно, вы захотите собрать Вывод нескольких команд и тройник их все в тот же файл, один после Другая. Очевидный способ сделать это с вариантом-a
$ Command | Tee Teefile
$ Другой-команда | Tee-a teefile
$ a-tart-command | Tee-a teefile