最近博主被分配了一項緊急任務,事情有些緊急,花了兩天的時間學習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 $stm-collect.cn.miaozhen.com_201607$_82_new.log $201607$.log >> /data/logs/sm_new/82_new/201607$_82.log
done
重新命名符合條件的檔案(批處理)
#!/bin/sh
in=20160701
while(($in<20160725))
dofilename="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]\\/\(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 $
cd "$" #進入制定路徑
date="00"
for((i=1; i<25; i++));do
if((i<10));then
date="0$i"
else
date="$i"
fi echo $date
grep -v "$/jul" *201607$_82_new.log >> error.log
done
*****===一些不太常用到的指令碼***************==
從日誌檔案中隨機選取幾條記錄寫入到另乙個檔案中
版本一
#!/bin/sh
date="04"
file="copy_05_06.log"
outfile="jul_""$date.log"
declare lines=0; #日誌檔案中剩餘的日誌條數
function totallines() #獲取第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 $
randomline=$(($random%$lines))
sed -n "$p" "$file" >> $outfile #隨機取一條資料追加到outfile
sed -i "$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$_selected.log | while read line
donum=$(($random%100))
#echo $
if(($ <= $));then
#echo $
echo $line >> $stm-collect.cn.miaozhen.com_201607$_new.log
fidone
done
awk修改cid,對原有的cid進行隨機+n操作
#!/bin/bash
sour="data.txt"
out="data_new.txt"
ct=$(wc -l $sour | awk '')
echo "source file lines : $ct"
lines=$(( ($random%10+90)*ct/100 ))
echo "should be change lines : $lines"
awk -v num=$lines -f'&' '
begin
print $0;
}' $sour > $out
old=$(wc -l $sour | awk '')
new=$(wc -l $out | awk '')
echo "old file has $old lines"
echo "new file has $new lines"
指令碼,指令碼結構
指令碼也是fastreport的一部分,用高階語言編寫。報表執行時,指令碼也同時被執行。指令碼中可以處理fastreport按常規方法不能處理的問題,比如根據指定條件隱藏資料。另外指令碼還可以處理fastreport中對話方塊的相關屬性。指令碼可以用fastscript引擎包含的語言中的某一種語言編...
shell指令碼常用指令碼
go指令碼總結 shell指令碼在我們工作過程中會起到相當重要的作用,下面是我在一年工作中儲存下來的常用的指令碼。在某個程式需要完成多機部署,並且路徑一致的時候,通過指令碼來完成部署,啟動,終止是一件很方便的事情。bin bash author zhaoyixing breif 程式部署指令碼 br...
Python指令碼 基礎指令碼訓練
目錄 python 基礎指令碼 1 random 隨機數模組,首先import random模組 1 random.random 生成 0.0,1.0 的隨機浮點數 2 random.randint x,y 生成 x,y 指定區間的隨機整數 3 random.unfiorm x,y 生成 x,y 之...