Sed命令乱码错误

时间:2016-10-06 18:21:38

标签: shell sed solaris

我试图从日志文件中获取15分钟之间的数据但是sed不起作用并且它生成sed:命令乱码:/ 38错误。这里38是min1的值。

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

1 个答案:

答案 0 :(得分: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