В настоящее время я перенаправляю вывод скрипта Python в файл журнала (журнал) в Linux.
Пример скрипта Python (example.py):
print("output")
Сценарий оболочки:
python3 example.py >> log
Когда я проверяю содержимое журнала (cat log
) после запуска example.py несколько раз, я получаю:
output
output
output
Итак, я хотел бы добавить пустую строку перед следующей «выходной» записью. Искомая должность:
output
output
output
Что я должен сделать в сценарии оболочки по-другому, чтобы добиться этого (не редактируя example.py)?
Спасибо
Обновлять:
пример.ру:
print("output1")
print("output2")
При первом запуске python3 example.py | sed 's/$/\n/' >> log
я получаю:
output1
output2
При запуске во второй раз:
output1
output2
output1
output2
Мне нужно добиться:
output1
output2
output1
output2
Вы можете добавить echo
после того, как ваш скрипт завершит выполнение, чтобы добавить завершающую новую строку:
(python3 example.py; echo) >> log
@Nunes Я отредактировал свой ответ, так что теперь он должен работать.
Вы можете использовать {}
, чтобы избежать появления подоболочки.
Одно из возможных решений:
python3 example.py >> log && echo >> log
Это добавит вывод из скрипта Python и после этого добавит дополнительную пустую строку.
Если вы хотите добавить дополнительную пустую строку перед каждым выводом скрипта Python:
echo >> log && python3 example.py >> log
Это добавит пустую строку, а затем вывод скрипта Python.
Спасибо за Ваш ответ. Я выполнил ваше предложение ('python3 example.py | sed 's/$/\n/' >> log'), однако мой исходный файл выводит более 1 строки в файл журнала. Я мог заметить, что оператор «sed» добавляет 1 пустую строку после каждого из моих результатов печати. Есть ли способ добавить пустую строку сразу после окончания всех результатов печати? Я обновил свой исходный вопрос, чтобы проиллюстрировать это. Спасибо