2016-10-06 2 views
0

Я пытаюсь получить данные между 15 минутами из файла журнала, но sed не работает, и он генерирует команду sed: command garbled:/38. Здесь 38 - значение min1.Ошибка команды Sed

Current_Time_in_Seconds=`date +"%T" | awk -F: '{ print ($1 * 3600) + ($2 * 60) + $3 }'` 

subtract_mins() { 
Fifteen_minute_before=`expr $Current_Time_in_Seconds - $1` 
echo $Fifteen_minute_before 
} 

Change_Time_into_Seconds() { 
Fifteen_minute_before1=`subtract_mins $1` 
sec=`expr $Fifteen_minute_before1 % 60` 
i=`expr $Fifteen_minute_before1/60` 
min=`expr $i % 60` 
hrs=`expr $i/60` 
timestamp=`(printf "%d:%02d:%02d" $hrs $min $sec)` 
echo "$min $hrs" 
} 


sDate= date +"%d-%b-%y" 
Curr_hrs=`date +"%T" |awk -F: '{ print ($1)}'` 
Curr_min=`date +"%T" |awk -F: '{ print ($2)}'` 


timestamp=`Change_Time_into_Seconds 900` 
hrs1=`echo $timestamp | cut -f 2` 
min1=`echo $timestamp | cut -f 1` 
sed -n '/'$sDate' '$hrs1':'$min1':[0-6][0-9]/,/'$sDate' '$Curr_hrs':'$Curr_min':[0-6][0-9]/p' /srvrs/mvprd/bea/user_projects/domains/mvwlp_prd/servers/mvwlp_s1/logs/mvwlp_s1_yyyy_MM_dd_hh_mm.log> /srvrs/mvprd/scripts/MultiVU_Service_count/output/out_1.txt 

ответ

2

удвоит цитата ваши переменные:

sed -n '/'"$sDate"' '"$hrs1"':'"$min1"':[0-6][0-9]/,/'"$sDate"' '"$Curr_hrs"':'"$Curr_min"':[0-6][0-9]/p' /srvrs/mvprd/bea/user_projects/domains/mvwlp_prd/servers/mvwlp_s1/logs/mvwlp_s1_yyyy_MM_dd_hh_mm.log> /srvrs/mvprd/scripts/MultiVU_Service_count/output/out_1.txt 

или просто заключите SED команду в двойных кавычках:

sed -n "/$sDate $hrs1:$min1:[0-6][0-9]/,/$sDate $Curr_hrs:$Curr_min:[0-6][0-9]/p" /srvrs/mvprd/bea/user_projects/domains/mvwlp_prd/servers/mvwlp_s1/logs/mvwlp_s1_yyyy_MM_dd_hh_mm.log> /srvrs/mvprd/scripts/MultiVU_Service_count/output/out_1.txt 
+0

Это не работает на самом деле сейчас это не говорит, что СЭД является grabled но выход не наступает –

+0

Возможно, в вашем файле нет соответствия для этого шаблона. – SLePort

+0

@ Kenavoz Я искал шаблон, который был там, но проблема в строке, где я сжимаю строку: - timestamp = 'Change_Time_into_Seconds 900' hrs1 =' echo $ timestamp | cut -f 2' min1 = 'echo $ timestamp | cut -f 1' эти два не могут получить правильные значения –

Смежные вопросы