1
grep-ing없이 모든 X 분 (예 : 5 분마다 5 분의 grep 로그)의 마지막 X 분에 대한 grep 로그를 원합니다. 이 작업을 수행하는 가장 간단한 방법은 무엇일까요?grep은 X 분마다 마지막 X 분 동안 기록합니다.
grep-ing없이 모든 X 분 (예 : 5 분마다 5 분의 grep 로그)의 마지막 X 분에 대한 grep 로그를 원합니다. 이 작업을 수행하는 가장 간단한 방법은 무엇일까요?grep은 X 분마다 마지막 X 분 동안 기록합니다.
필요한 두 번째 부분, 난 아직 테스트하지 않은 :(
참고 : 또한 당신이 ('루비'변경 오두막의 위치를 알고있는 경우 . 스크립트의 첫 번째 줄), 보안상의 이유로
#! /usr/bin/env ruby
require 'date'
require 'pathname'
if ARGV.length != 4
$stderr.print "usage: #{$0} -d|-h|-m|-s time expression log_file\n"
exit 1
end
begin
total_amount = Integer ARGV[1]
rescue ArgumentError
$stderr.print "error: parameter 'time' must be an Integer\n"
$stderr.print "usage: #{$0} -d|-h|-m|-s time expression log_file\n"
end
if ARGV[0] == "-m"
gap = Rational(60, 86400)
time_str = "%b %d %H:%M"
until_next_search = total_amount * 60
elsif ARGV[0] == "-s"
gap = Rational(1, 86400)
time_str = "%b %d %H:%M:%S"
until_next_search = total_amount
elsif ARGV[0] == "-h"
gap = Rational(3600, 86400)
time_str = "%b %d %H"
until_next_search = total_amount * 3600
elsif ARGV[0] == "-d"
time_str = "%b %d"
gap = 1
until_next_search = total_amount * 86400
else
$stderr.print "usage: #{$0} -d|-h|-m|-s time expression log_file\n"
exit 1
end
pn = Pathname.new(ARGV[3])
if pn.exist?
log = (pn.directory?) ? ARGV[3] + "/*" : ARGV[3]
else
$stderr.print "error: file '" << ARGV[3] << "' does not exist\n"
$stderr.print "usage: #{$0} -d|-h|-m|-s time expression log_file\n"
end
search_str = ARGV[2]
now = DateTime.now
while true
total_amount.times do
now -= gap
system "cat " << log << " | grep '" << now.strftime(time_str) << ".*" << search_str << "'"
end
sleep until_next_search
end
포스트 당신의 일부 로그 그래서 우리는 날짜 형식을 참조 또한 당신이 시도 한 내용을 게시 – Jotne
이 봐 유무 :.. HTTP : // 유래 .com/questions/21524957/parse-a-file-between-c ertain-timestamps –