shell指令碼利用sed命令分割檔案

2021-10-19 07:02:13 字數 1095 閱讀 2768

前幾天有個需求,網路模組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 備份預...