Вот один из способов узнать, как долго длилось наибольшее количество совпадений:
Назначьте переменную наибольшее
исходной команде: * добавление ^
в шаблон grep ограничивает совпадения датам в начале строки.
highest=$(grep "^2017-02-22" "LogFile.log" | cut -c1-20 | uniq -c | sort -n | tail -n1)
Снова используя исходную команду, вплоть до uniq
, перенаправьте полный список счетчиков uniq
во временный файл .
grep "^2017-02-22" "LogFile.log" | cut -c1-20 | uniq -c >tempfile
Используйте grep для поиска максимального числа в новый временный файл
с использованием -A1
, чтобы получить первую строку после:
grep -A1 "^$highest" tempfile | tail -n1
Вы можете объединить их в одну строку, используя точку с запятой (;) следующим образом:
highest=$(grep "^2017-02-22" "LogFile.log" | cut -c1-20 | uniq -c | sort -n | tail -n1);grep "^2017-02-22" "LogFile.log" | cut -c1-20 | uniq -c >tempfile;grep -A1 "^$highest" tempfile | tail -n1
Если вам нужно чтобы выполнить математические расчеты даты и времени для вывода фактической разницы во времени, вы можете записать полученный результат в переменную nexttime
nexttime=$(highest=$(grep "^2017-02-22" "LogFile.log" | cut -c1-20 | uniq -c | sort -n | tail -n1);grep "^2017-02-22" "LogFile.log" | cut -c1-20 | uniq -c >tempfile;grep -A1 "^$highest" tempfile | tail -n1)
и использовать это для вычисления разницы:
highest=$(echo $highest | cut -d' ' -f 3) # get the time field (#3)
nexttime=$(echo $nexttime | cut -d' ' -f 3) # get the time field (#3)
logStart=$(date -u -d "$highest" +"%s") # convert to seconds
logEnd=$(date -u -d "$nexttime" +"%s") # convert to seconds
date -u -d "0 $logEnd sec - $logStart sec" +"%H:%M:%S" # display time difference
И, аналогично, вы можете объединить эти операторы с другими выше, используя точку с запятой (;), или поместите все это в сценарий.
Вместо этого вы можете использовать find
. Например:
find./test/src -type f -name \*.js
Если вы хотите ограничиться только двумя каталогами в глубину:
find./test/src -maxdepth 2 -type f -name \*.js