Shell_Linux_Shell指令碼庫_日誌處理中寫的一些指令碼
最近博主被分配了一項緊急任務,事情有些緊急,花了兩天的時間學習Shell,並完成了一項任務.自認為還算不錯,
接下來分享下處理這個任務中所編寫的一些指令碼,就算留作紀念吧
用到的技術點
0.常用的 Linux命令 cat / grep / sed / cd / wc
1.shell 流程控制
2.shell 條件判斷
3.shell 變數
5.shell 陣列
6.正則匹配
將兩個檔案下的指定檔案合併放置到一個新的資料夾下面
#!/bin/sh date=0 dir1="/data/logs/d19_201606/06/selectedlogs/82/baselogs/newlogs_tmp/newlogs/" dir2="/data/logs/d19_201606/80_advanced/" outdir="" for((i=1;i<=24;i++));do if((i<10));then date="0$i" else date="$i" fi #echo $date cat ${dir1}stm-collect.cn.miaozhen.com_201607${date}_82_new.log ${dir2}201607${date}.log >> /data/logs/sm_new/82_new/201607${date}_82.log done
重新命名符合條件的檔案(批處理)
#!/bin/sh
in=20160701
while(($in<20160725))
do
filename="stm-collect.cn.miaozhen.com_""$in"".log"
outname="stm-collect.cn.miaozhen.com_""$in""_.log"
mv $outname $filename
let "in++"
done
利用sed與正則替換符合條件的串
#!/bin/sh logFile="copy_05_06.log" date="02" sed -i "s/[0-9]\{2\}\/\(May\|Jun\|Jul\)/$date\/Jul/g" $logFile grep -v "$date/Jul" $logFile #檢驗有沒有刪除乾淨
利用grep -v 檢查日誌檔案是否有不滿足規則的行
#!/bin/sh dir="/data/logs/d19_201606/06/ selectedlogs/82/baselogs/newlogs/" date_count=25 sitelist=(82) echo ${sitelist[0]} cd "${dir}" #進入制定路徑 date="00" for((i=1; i<25; i++));do if((i<10));then date="0$i" else date="$i" fi echo $date grep -v "${date}/Jul" *201607${date}_82_new.log >> error.log done
========一些不太常用到的指令碼=================
==============================================
從日誌檔案中隨機選取幾條記錄寫入到另一個檔案中
版本一
#!/bin/sh
date="04"
file="copy_05_06.log"
outfile="Jul_""$date.log"
declare lines=0; #日誌檔案中剩餘的日誌條數
function totalLines(){
result="`wc -l $file`" #如果想從命令中獲取資料的話,也可以用 $()
arr=($result) #將結果轉換為陣列
lines=${arr[0]} #獲取第0個引數,行號
#echo $lines #列印總的行數
}
sum=$(($RANDOM%8+8)) #sum記錄了隨機選取的條數
echo "lines has been selected Num:$sum"
echo "before delete: $(wc -l $file)"
for((i=0;i<$sum;i++));do
#echo $i
totalLines;
#echo ${lines}
randomline=$(($RANDOM%$lines))
sed -n "${randomline}p" "$file" >> $outfile #隨機取一條資料追加到outfile
sed -i "${randomline}d" "$file" #刪除被取出取的那一行
#echo $randomline
done
echo "after delete: $(wc -l $file)"
echo "selected lines: $(wc -l $outfile)"
版本二
1、合併 cat file1 file2 > file3
2、去重 sort file3 | uniq >> file4
3、隨機抽取 shuf -n12 file4 > file5 查行數wc -l
4、去掉a中包含b的部分
cat b.txt a.txt | sort| uniq -u > file
隨機刪除日誌檔案中的資料(批處理方式)
#! /bin/bash
rate=$((RANDOM%7+85))
indir="/mnt/hgfs/Share_Windows_Linux/"
outdir="/mnt/hgfs/Share_Windows_Linux/"
indate=(18 17 16 18 28 17 16 30 27 19)
outdate=(01 02 03 04 05 06 07 08 09 10)
cd "$indir"
num=0
for((i=0;i<10;i++));do
cat stm-collect.cn.miaozhen.com_201606${indate[i]}_selected.log | while read LINE
do
num=$(($RANDOM%100))
#echo ${num}
if((${num} <= ${rate}));then
#echo ${num}
echo $LINE >> ${outdir}stm-collect.cn.miaozhen.com_201607${outdate[i]}_new.log
fi
done
done
awk修改cid,對原有的cid進行隨機+n操作
#!/bin/bash
sour="data.txt"
out="data_new.txt"
ct=$(wc -l $sour | awk '{print $1}')
echo "source file lines : $ct"
lines=$(( ($RANDOM%10+90)*ct/100 ))
echo "should be change lines : $lines"
awk -v num=$lines -F'&' '
BEGIN{
srand();
}
{
if(NR<=num)
{
split($2,a,"=");
ct=int(rand()*100%9);
a[2]=a[2]+ct;
gsub(/cid=[0-9]*/,"cid="a[2],$0);
#$2=a[1]"="a[2];
}
print $0;
}
' $sour > $out
old=$(wc -l $sour | awk '{print $1}')
new=$(wc -l $out | awk '{print $1}')
echo "old file has $old lines"
echo "new file has $new lines"
相關推薦
Shell_Linux_Shell指令碼庫_日誌處理中寫的一些指令碼
最近博主被分配了一項緊急任務,事情有些緊急,花了兩天的時間學習Shell,並完成了一項任務.自認為還算不錯, 接下來分享下處理這個任務中所編寫的一些指令碼,就算留作紀念吧 用到的技術點 0.常用的 Linux命令 cat / grep / sed / cd / wc
開發環境 -- 在linux中寫一個指令碼拷機
遇到一個問題,x86板卡通過PCIE外接網絡卡晶片82599,某一塊板子過一會出現網路不通的問題,排查發現某一時刻系統出現如下異常: [ 1250.888189] Uhhuh. NMI received for unknown reason 31 on CPU 0. [ 1
點雲處理中的一些後續問題。
一些事 才會 class 識別 空格 div 距離 出現 問題 1.在對點雲處理的步驟中,對深度沒有值的地方,對點的處理方法大部分是均為0。某些時候會出現問題,需要對這部分進行操作。(設置一個最遠的值,為了可以去掉障礙物,去不掉原因可能是 在障礙物所在的地方,在設置的最遠
nodejs在自然語言處理中的一些小應用
nodejs做自然語言處理是非常可行的,這次我做了一些小小的嘗試,一起來體驗一下吧。 因為還保持著對自然語言處理的那份熱愛,最近沒事的時候會把畢業論文翻出來看(畢業論文的課題就是關於自然語言處理的),然後在我的新部落格中加入了一些相關的處理,主要做了以下幾個
python資料處理中的一些實際問題
前段時間參加阿里天池中的智慧交通預測挑戰賽,費了不少功夫初賽排名45進入了複賽,後續沒有時間繼續複賽了,但還是想總結一下,演算法就不詳述了,具體談談資料處理的一些問題與解決方案。適合想要學習的新手參考,歡迎大家提出意見 語言使用python+pycharm 資料與部分程式碼
dljd_011_jdbc再次封裝工具類_把數據庫的相關信息寫到配置文件中,減低代碼的耦合度
man 數據庫工具類 () version 數據庫配置 測試 loader connect not 一、將連接數據庫所需的相關信息寫入到配置文件、通過讀取配置文件來獲取數據庫的相關信息 package edu.aeon.aeonutils; import jav
記一次SQLSERVER 長期寫日誌強制中斷後的處理以及反思
因一個表中的資料從26號之後,因儲存過程的問題,資料一直抽取抽取,導致資料重複量超過有的超過了900多條。 所以,計劃刪除表中26號之後的資料,再重新抽取。 表中有一個聚集索引,一個非聚集索引。刪除之前收縮了下日誌,且停止了全部作業。刪除
sql server 還原數據庫,數據庫提示正在還原中的處理辦法
全備 with 使用 time 差異 backups 屬性 () logs 還原數據庫時,提示還原成功,可是數據庫列表中該數據庫顯示正在還原中: 執行此命令即可: RESTORE DATABASE EnterPriseBuilding WIT
Python中的日誌處理
分割 ret 其中 文件名 debug effective 處理器 日誌級別 backup 在日常項目中,總是需要記錄下一些細小信息或者錯誤碼、錯誤信息的,這個時候就需要進行日誌的操作。python中用於日誌創建、設置和記錄等功能的模塊,就是logging了,下面是對其基本
Go語言中日誌處理,log包的使用
Go語言日誌 Go語言log golang日誌處理 Golang提供了原生日誌庫“log”,使用簡單方便,本文以代碼為例進行說明介紹。 package main import ( "os" "log" "fmt" ) func main() { // 打開日誌文
Python讀寫excel練習_去除excel中亂碼行,並添加列
寫入excel continue delete val value urn com date add 需求: 把app_student.xls裏面的數據, 1、如果這一行數據裏面有亂碼(及包含?),那麽就刪掉 2、再加上一列,是否畢業 3、如果班級是天蠍座
『Python CoolBook』C擴展庫_其六_從C語言中調用Python代碼
callable 什麽 跟著 來講 cpp iat mst 轉化 gcc 一、C語言運行pyfun的PyObject對象 思路是在C語言中提供實參,傳給python函數: 獲取py函數對象(PyObject),函數參數(C類型) 獲取GIL(PyGILState_
關於sqoop導入數據到hive數據庫當中,表中數據為空倒入hive當中的處理
轉化 hive數據庫 是不是 技術 關於 trim 如果 col 去掉 今天在hive數據庫當中查詢一張表,查詢數據為空的值,但是死活就是匹配不到: 查詢語句如下: select * from loan_repayment_detail where trim(fact_
2.1 異常日誌_異常處理
返回 指針 傳輸 控制 run note 數據庫 message 代碼 1. 【強制】Java 類庫中定義的可以通過預檢查方式規避的 RuntimeException 異常不應該通過catch 的方式來處理,比如: NullPointerException , IndexO
.NET/C# 異常處理:寫一個空的 try 塊程式碼,而把重要程式碼寫到 finally 中
不知你是否見過 try { } finally { } 程式碼中,try 塊留空,而只往 finally 中寫程式碼的情況呢?這種寫法有其特殊的目的。 本文就來說說這種不一樣的寫法。 你可以點開這個連結檢視 Exception 類,
【181129】VC++ GDI+程式設計必備的原始碼庫_各種繪圖與影象處理函式原始碼
VC++ GDI+程式設計必備的原始碼庫,包含GDI+各個方面的程式設計示例。 以下是各種功能列表: 畫筆 從畫刷中構造畫筆 自定義線型 畫筆的對齊方式 畫筆的縮放與旋轉 畫筆的線帽屬性 畫筆的透明度支援
.NET/C# 異常處理:寫一個空的 try 塊程式碼,而把重要程式碼寫到 finally 中(Constrained Execution Regions)
不知你是否見過 try { } finally { } 程式碼中,try 塊留空,而只往 finally 中寫程式碼的情況呢?這種寫法有其特殊的目的。 本文就來說說這種不一樣的寫法。 本文內容 空的 try 塊 受約束的
maven中寫SSM專案啟動某個模組出現 org.springframework.beans.factory.BeanCreationException 異常的處理辦法
現在做的一個專案是有關網上商城的,當出現以下錯誤: org.springframework.beans.factory.BeanCreationException :Error creating bean with name ‘XXX’ 出現這種錯誤的原因可能有以下幾
Python自然語言處理nltk庫中的一些重要的模組
nltk庫中的一些重要的模組 ——nltk.corpus ————獲取語料庫。 ——————語料庫和詞典的標準化介面 ——nltk.tokenize,nltk.stem ————字串處理 ——————分詞,句子分解,提取主幹 ——nltk.collocation
離散傅立葉變換在影象處理中的應用_學習
1、為什麼要進行傅立葉變換,其物理意義是什麼? 傅立葉原理表明:任何連續測量的時序或訊號,都可以表示為不同頻率的正弦波訊號的無限疊加。而根據該原理創立的傅立葉變換演算法利用直接測量到的原始訊號,以累加方式來計算該訊號中不同正弦波訊號的頻率、振幅和相位。 和傅立葉