Мне нужно написать сценарий, в котором нужно искать конкретную строку (буквенно-цифровую) внутри файла каждый час в течение всего дня. И поиск не должен содержать результатов за предыдущий час.
Формат метки времени внутри файла: «2014-02-17 17:00:01».
Приведенная ниже команда выдаст результат за весь день, но мне нужен каждый час.
grep "recFileChg: true" * .tmp | awk -F "|" '{print $ 4, $ 29}' | вырезать -d "," -f1,2 | awk -F "[" '{напечатать $ 1, $ 2}'
Я был бы очень признателен, если бы кто-нибудь мог мне в этом помочь.
Чтобы выполнить то, что вы хотите, более простой способ - записать количество строк в этом файле в конце выполнения вашего скрипта и сохранить его в файле. В следующий раз, то есть в течение следующего часа, можно установить область поиска от этой строки с номером +1 до конца файла. Грубый пример может быть следующим:
# assuming the number of lines in file at the last run was recorded
# in a file called `lastrun`
s=$(cat lastrun)
sed -e "1,${s}d" > searchscope
grep ...blah-blah | cut .. blah-blah searchscope
rm searchscope
cat myfile|wc -l > lastrun
и поместите его в часовой цикл или поместите в cron, как душе угодно.
Что ж, было бы неплохо иметь строку, которая у вас есть, и строку, которую вы хотели бы получить в качестве результата поиска.
В любом случае, я думаю, что это можно решить с помощью просто grep и cut:
grep "recFileChg:true" *.tmp | cut -f2- -d':' | cut -f2 -d'[' | cut -f1 -d':'