Я не могу добавить временную метку к выводу AWS CLI в файле журнала.
Я пробовал через awk, но выдает ошибку
aws s3 --output text sync localPath s3://bucketName --endpoint-url https://s3-vpcurl.com | awk '{ print strftime("[%Y-%m-%d %H:%M:%S]"), $0 }' >> C:\syncFromS3\NASToS3-Log.txt
awk: cmd. line:1: { print strftime([%Y-%m-%d
awk: cmd. line:1: ^ syntax error
Я хотел распечатать журналы вместе с отметкой времени в моем файле журнала.
например:-
[2024-04-22 12:20:38] Completed 440 Bytes/949.5 KiB (382 Bytes/s) with 6 file(s) remaining
[2024-04-22 12:20:38] upload: ..\..\syncFromS3\result_90.csv to s3://s3BucketName/IndexFilesCSV/Results/result_90.csv
или есть ли другой способ сделать это?
Любая помощь будет оценена по достоинству.
Я пробовал, но в этом месте все равно выдает ошибку awk: cmd. строка:1: { print strftime(%Y-%m-%d awk: cmd. line:1: ^ синтаксическая ошибка
Возможно, попробуйте со скобками (awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0 }') >> C:\syncFromS3\NASToS3-Log.txt
да, я поставил кавычки, но при получении ошибки их больше нет
cmd
общеизвестно дрянной, когда дело доходит до таких вещей. Стандартное решение — сохранить сценарий Awk в файле и вызвать его с помощью awk -f path\to\file.awk
(или полностью заменить Windows; это гораздо более элегантное решение в долгосрочной перспективе).
Как насчет того, чтобы просто запустить date >> C:\syncFromS3\NASToS3-Log.txt
перед командой? Он вынесет его в отдельную строку, но это довольно просто!
кстати, все эти awk
скрипты (из вопроса, из комментариев) у меня работают; Я использую GNU awk
; тот факт, что вы записываете в файл Windows (C::\dir\file.txt
), и упоминание cmd
в сообщении об ошибке заставляет меня думать, что ваша версия awk
имеет некоторые ограничения; пожалуйста, обновите вопрос, указав результаты awk --version
и type -a awk
Вам нужно будет использовать двойные кавычки, чтобы заключить строку в кавычки, и экранировать двойные кавычки в строке: aws ... | awk "{ print strftime(\"[%Y-%m-%d %H:%M:%S]\"), $0 }"
awk ожидает, что строка формата для strftime
будет заключена в кавычки
пытаться
aws s3 --output text sync localPath s3://bucketName --endpoint-url https://s3-vpcurl.com | awk '{ print strftime("[%Y-%m-%d %H:%M:%S]"), $0 }' >> C:\\syncFromS3\\NASToS3-Log.txt
Убедитесь, что при перенаправлении в качестве разделителя путей в Windows используются двойные обратные косые черты.
Отлично, если это решило вашу проблему, буду признателен, если вы примете ответ :)
Эй, я думаю, ты не можешь ставить скобки в функцию strftime, может быть, попробуй без них, вот так:
awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0 }' >> C:\syncFromS3\NASToS3-Log.txt