2016-10-06 25 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

ITSは、sedのがgrabledされていることを言っていない今、実際に動作していません出力が来ていない –

+0

あなたのファイルにこのパターンの一致がないかもしれません。 – SLePort

+0

@ Kenavoz私はそこにあったパターンを検索しましたが、文字列を分割する行に問題があります: - timestamp = 'Change_Time_into_Seconds 900' hrs1 =' echo $ timestamp | cut -f 2 ' min1 =' echo $ timestamp | cut -f 1' この2つは正しい値を取得できません –

関連する問題