Shell Linux Shell指令碼庫

2021-07-15 22:55:14 字數 3852 閱讀 4484

最近博主被分配了一項緊急任務,事情有些緊急,花了兩天的時間學習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 之...