Передать вывод функции, чтобы найти строку, переданную в качестве аргумента, в вывод функции из входного файла - PullRequest
0 голосов
/ 09 октября 2018

У меня есть простая функция, которая выдаст мне журнал за один час

past_hour_log(){
    awk -v Date1=$(date -d"now 1 hour ago" "+%H:%M:%S") -v Date2=$(date -d"now 1 hour ago" "+%d") ' { if ($3 > Date1 && $2 >= Date2) {print $0}} ' /var/log/syslog
}

Моя функция Вывод:

Oct  9 12:15:15 localhost-IdeaPad-980 systemd[1]: time has been changed
Oct  9 12:16:00 localhost-IdeaPad-980 systemd[1534]: time has been changed
Oct  9 12:17:00 localhost-IdeaPad-980 systemd-timesyncd[25237]: Synchronized to time server 91.189.91.157:123 (ntp.ubuntu.com).
Oct  9 12:17:01 localhost-IdeaPad-980 CRON[27685]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Oct  9 12:17:01 localhost-IdeaPad-980 CRON[29613]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

Итак, на следующей строке я пытаюсь передать этоФункция выводит в grep xargs, чтобы получить общее количество строк, заданных в качестве входных данных из input.txt

TIME_COUNT="$(cat input.txt | xargs -I{} grep {} past_hour_log | awk '{print $7}' | awk -F '?' '{print $1}' | uniq -c)"

Но результат показан ниже.Есть какие-нибудь идеи для этого?

grep: past_hour_log: Нет такого файла или каталога

1 Ответ

0 голосов
/ 09 октября 2018

Вы можете попытаться сделать следующее:

past_hour_log() {
    date1=$(date -d"now 1 hour ago" "+%H:%M:%S")
    date2=$(date -d"now 1 hour ago" "+%d")
    awk -v Date1="$date1" -v Date2="$date2" '($3 > Date1 && $2 >= Date2){print}' /var/log/syslog;
}

, а затем выполнить

TIME_COUNT="$(past_hour_log | grep -F -f input.txt | awk '{print $7}' | awk -F '?' '{print $1}' | uniq -c)"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...