Попробуйте:
parallel -j0 --line-buffer :::./script1./script2./script3
Я решил проблему с awk
в своем скрипте:
ONE_HOUR_AGO="$(date -d '1 hour ago' +%Y%m%d%H)"
NOW="$(date +%Y%m%d%H)"
awk '/time: '$NOW'/,/time: '$ONE_HOUR_AGO'/' log_file.txt
Это устранило мои проблемы с этими отметками времени, и я могу анализировать файл журнала.
Я разбил его на пару переменных, но вы, вероятно, можете продолжить или немного лучше передать его:
fma=`date --date='5 minutes ago' +"%Y%m%d%H%M%S"`
line_num=`tac file.txt | awk -v five_min_ago=$fma\
'(NF > 1 && $2 < five_min_ago ){print NR; exit 1}'`
tail -$line_num file.txt
Пояснение:
fma=...
говорит сохранить в переменной оболочки fma
date
пять минут назад в формате год, месяц, день, час, минута, секунда, что похоже на то, что делает ваш журнал. line_num=...
говорит, что нужно прочитать файл в обратном порядке и передать его на awk
. В программе awk
сохраните переменную bash $fma
как five_minutes_ago
, затем, если количество полей больше одного, а время журнала меньше целевого времени, распечатайте количество строк, которые мы видели до сих пор (, включая те, которые не прошли квалификацию )и вышли. Сохраните результат как переменную оболочки line_num
. tail
, чтобы получить последние line_num
строки изfile.txt
Замечание. :Вам придется настроить количество проверяемых полей, так как у вас, вероятно, там больше, чем просто «вещи», но это должно помочь вам в большинстве случаев.