shell csv txt檔案對比

2022-03-20 14:13:25 字數 4282 閱讀 7699

1 #!bin/bash

2 kettleconfighome=/home/vmuser/linbo/kettledemo/job/config

3 apiinfos=/home/vmuser/linbo/kettledemo/job/data/apiinfo

4 api_csv_path_home=/home/vmuser/linbo/test_upload/data_file

5 sendmaildata=/home/vmuser/linbo/kettledemo/job/senddata

6 dtm=`date +"

%y-%m-%d %h:%m:%s"`

7 dt=`date +"

%y%m%d"`

10 lastday=`date -d "

1 day ago

" +"

%y%m%d"`

11 declare -a diffresult

12#先將pord 介面生成的檔案load test的情況告知相關人 ;

13 #sh /home/vmuser/linbo/kettledemo/job/execsh/filecpcase.sh

14 apicnt=(`ls -rt $api_csv_path_home`)

15 #apicnt=(unilever_three_shop_sales_retrun)

16for((i=0;i<$ ;i++));

17do

18 strinfo=""

19#預設不傳送郵件;

20 sendmail=false

21 apiname=$

22#到prod 目錄下查將今天生成的檔案篩選出來

23 cd $api_csv_path_home/$apiname/prod

24 cmmd00="

ls --full-time ./ | sed -n '/$(date +

"%y-%m-%d"

)/p' | awk ''

"25 prod_currentdatefile=(`eval $cmmd00`)

26#刪除prod 3天前介面生成的檔案

27find ./ -mtime +3 -delete

28 cd $api_csv_path_home/$apiname/test

29 cmmd02="

ls --full-time ./ | sed -n '/$(date +

"%y-%m-%d"

)/p' | awk ''

"30 test_currentdatefile=(`eval $cmmd02`)

31#刪除test 3天前介面生成的檔案

32find ./ -mtime +3 -delete

33 #echo

"$_$apiname.prod.[$] :$

"34 #echo

"$_$apiname.test.[$] :$ "35

if (( $ == 0 )); then

36echo

"**************** $apiname 今天沒有生成檔案 不需要對比 continue ! ***************"37

continue

38fi

39for((j=0;j<$;j++));

40do

41 apicsvpath=$/$

42 prod_csvname=$

43#假如prod介面下今天只生成了1個檔案 並且test環境也有檔案生成 就直接使用test環境的檔案進行比較,否則使用生產環境的檔案與測試環境的檔案進行絕對匹配 ;

44if [[ $ = 1 && $ = 1 ]]; then

45 uat_csvname=$

46else

47 uat_csvname="

uat_$prod_csvname"48

fi49

#獲取prod 和 test 環境當天生成檔案的大小和行數 ;注意是檔案建立日期為今天並不是檔名稱中的日期;

50 prod_filesize=`ls -l $/prod/$ | awk''

`51 test_filesize=`ls -l $/test/$ | awk''

`52 prod_filerowcnt=`cat $/prod/$ | wc -l`

53 test_filerowcnt=`cat $/test/$ | wc -l`

5455

if (( $prod_filesize != 0 )); then

56 # echo

"刪除上一天的傳送容 rm -rf $/$/$ "57

rm -rf $/$/$

58if [[ -d "

$/$/$/$

" ]]; then

59 #echo

"$ 檔案存在 則刪除,保持每次都是最新需要傳送的內容 ! "60

rm -rf $/$/$/$/*

61fi

62#"建立 $/$/$/$ 目錄"

63mkdir -p $/$/$/$

64#"將 $ 和 $ 檔案cp 到 $sendmaildata/$/$/$ 目錄下 "

65cp $apicsvpath/prod/$ $sendmaildata/$/$dt/$

66cp $apicsvpath/test/$ $sendmaildata/$/$dt/$

67cd $sendmaildata/$/$dt/$/

68sort $ -o $

69sort $ -o $

70diff -ihb $ $ >./$_$(date +"%y%m%d_%h%m%s")_diff.log

71diffflag=`cat ./$_$(date +"%y%m%d_%h%m%s")_diff.log | wc -l`

72if (( $diffflag != 0 )); then

73strinfo="$prod_csvname 【 filesize=$b , rowcnt=$行 】;

$uat_csvname 【 filesize=$b , rowcnt=$行 】;$strinfo"

74# echo "--------修改傳送郵件標誌--------"

75sendmail=true

76else

77rm -rf $ $ $_$(date +"%y%m%d_%h%m%s")_diff.log

78diffresult["$_$"]="$.$和$[$prod_filesize : $prod_filerowcnt]\n"

79fi

80: '

81else

82echo " $prod_csvname 和 $uat_csvname 檔案大小為 0 無需比較 !"83'

84fi

85done

86if [[ $sendmail = true ]]; then

87#傳送郵件前需要修改的配置 ;

88sed -i "s#^attachment_filepath=.*#attachment_filepath=//home//vmuser//linbo//kettledemo//job//senddata//$//$#g" $kettleconfighome/sandmailvariate.properties

89sed -i "s#^var1=.*#var1=#g" $kettleconfighome/sandmailvariate.properties

90sed -i "s#^var2=.*#var2=$apiname#g" $kettleconfighome/sandmailvariate.properties

91echo ">>>>>>>>>>>>>>>>>>>>>>>> 開始傳送郵件 >>>>>>>>>>>>>>>>>>>>>"

92#sh /home/vmuser/linbo/kettledemo/job/kjb/execsendmail.sh

93fi

9495

done

96echo -e "$" >>/home/vmuser/linbo/kettledemo/job/log/$/$(date +"%y%m%d_%h").log

檔案內容對比

usr bin perl w open file,d 協議書 學號.txt or die cannot open 1 協議書 學號.txt 中第一列為協議書編號 唯一 第二列為對應的學號 唯一 第三列為對應的學生姓名 out d 學號.txt 輸出的比對結果 open out,out while 2...

Linux vimdiff對比檔案

在linux中對兩個檔案進行對比實用技巧 1 vimdiff file1 file2 終端下輸入該命令進入 vim,垂直分隔視窗進行比較 2 vimdiff o file1 file2 水平分隔視窗進行比較 3 ctrl w j,k,h,l 上下左右切換游標所在的視窗,括號中表示可以是其中之一,按下...

python 檔案對比

在這個模組中,我們需要了解的知識 包含在第二個系列行中,但不包含第乙個 包含在第乙個系列行中,但不包含第二個 兩個系列行一致 存在增量差異 存在差異字元 第一種對比方法 你覺得 但是以上這種方式比較起來讓人覺得 眼花繚亂 為了簡潔明瞭,我們還可以採用另一種方式。第二種對比方式 在我們專案的資料夾裡會...