前幾天有個需求,網路模組5秒定時傳回領區資訊並寫入檔案,需求為5分鐘後讀取檔案,提取每次傳回的領區資訊中的earfcn和rsrp等,每次傳回的資訊以"#####"為分隔符;
檔案格式如下
領區資訊....
#####
領區資訊....
#####
領區資訊....
#####
領區資訊....
#####
領區資訊....
#####
提取資訊前要先把每5秒傳回的資訊分割,然後再提取,所以就寫了一下的指令碼來提取檔案:
#!/bin/sh
myfile="/var/scan_lte_backup"
num=$(grep '#####' $ | wc -l) #統計有多少個」#####「,也就是統計總共傳回多少次領區資訊
echo "num="$
count=0
line=$(sed -n '/#####/=' $) #統計關鍵字」#####「所在行的行號
echo "line="$line
for n in $line #以每個關鍵字所在行號做迴圈
do [ $count -eq 0 ] && let startline=1 #count=0表示第一次,則從第一行開始
let count+=1
let endline=n-1 #結束行號為關鍵字」#####「所在行的前一行,若分割後的檔案需要儲存關鍵字,則無需減1
[ $count -eq $num ] && endline=$(sed -n '$=' $) && let endline-=1 #如果為最後一段內容,則最後的行號為關鍵字」#####「的前一行,若要儲存關鍵字則無需減1
echo "count="$count
sed -n "$,$ p" $ > /var/result_$.txt #把關鍵字分割成檔名為result_1.txt,result_2.txt,result_3.txt,result_4.txt....的檔案
done
sed是乙個很強大的檔案處理命令,熟練的運用可以省去非常多寫**的時間,繼續學習!!! shell指令碼利用expect實現scp免密傳輸
shell指令碼實現scp傳輸 命令解釋 c 表示可以在命令列下執行except指令碼 spawn 命令啟用乙個unix程式來互動,就是在之後要執行的命令 expect aaa 表示程式在等待這個aaa的字串 send 向程式傳送字串,expect和send經常是成對出現的,比如當expect aa...
Shell指令碼sed命令
1 p命令 命令p用於顯示模式空間的內容。預設情況下,sed把輸入行列印在螢幕上,選項 n用於取消預設的列印操作。當選項 n和命令p同時出現時,sed可列印選定的內容。例子 plain view plain copy 1 sed my p datafile 預設情況下,sed把所有輸入行都列印在標準...
shell指令碼利用rman實現自動備份資料庫
b backup path l backup level with 0 full or 1 incremental s the user sys pawword 不利用引數則採用預設,預設備份路徑為 oracle base flash recovery area orcl backupset 備份預...