linux diff比較2個檔案的不同

wisdomone1發表於2015-10-25

背景

   學習如何比較2個檔案不同,便於在ORACLE分析資料塊變更時用上此功能。


結論

1,diff用於比較2個檔案的不同
2,diff用於比較2個檔案的內容,顯示結果如下 
1c1
< mynewly
---
> my
上述具體含義請見下述測試


3,  
變化標記有3種情況,各為
c  --即變化,即記錄發生了變化
a  --即增加了記錄
d  --即刪除了記錄




測試



1,建立2個相同檔案
[root@seconary test_diff]# more file1.txt 
a
b
c
[root@seconary test_diff]# 
[root@seconary test_diff]# more file2.txt 
a
b
c
[root@seconary test_diff]# 


2,比較2個相同的檔案
如果2個檔案相同,不顯示任何資訊
[root@seconary test_diff]# diff file1.txt file2.txt 
[root@seconary test_diff]# 




3,比較2個檔案,且右檔案發生變化
修改file2.txt
[root@seconary test_diff]# more file2.txt 
anewly
b
c
[root@seconary test_diff]# 


僅1個檔案變化,diff結果顯示
[root@seconary test_diff]# diff file1.txt file2.txt 
1c1
< a  ---這個表示第個檔案的發生變化的哪一行的開頭的字母,顯示形式為 < a
---
> anewly --這個表示發生變化的檔案的變化後的記錄


再次修改file2.txt
[root@seconary test_diff]# more file2.txt 
anewly
b
cnewly2


比較2個檔案,如果發生變化檔案的有多條記錄,會把發生變化的多條記錄也顯示出來
[root@seconary test_diff]# diff file1.txt file2.txt 
1c1
< a
---
> anewly
3c3
< c
---
> cnewly2


4,比較2個檔案,左檔案發生變化
刪除file2.txt,繼續測試
[root@seconary test_diff]# rm -rf file2.txt 
[root@seconary test_diff]# 


[root@seconary test_diff]# cp file1.txt file2.txt
[root@seconary test_diff]# 


修改file1.txt
[root@seconary test_diff]# more file1.txt 
a
bnewly
c


比較2個檔案
[root@seconary test_diff]# diff file1.txt file2.txt
2c2
< bnewly --發生變化的檔案,修改後的內容
---
> b   --發生變化的檔案,發生變化前的記行錄


再次修改file1.txt
[root@seconary test_diff]# more file1.txt
asb
bnewly
c


比較2個檔案
[root@seconary test_diff]# diff file1.txt file2.txt
1,2c1,2
< asb
< bnewly
---
> a
> b


刪除2個比較檔案,繼續測試,採用單條記錄多字元方式(上面測試皆採用單記錄單字元)
[root@seconary test_diff]# rm file*
rm: remove regular file `file1.txt'? y
rm: remove regular file `file2.txt'? y
[root@seconary test_diff]# 




[root@seconary test_diff]# more file1.txt
my
birthday
is
[root@seconary test_diff]# more file2.txt 
my
birthday
is
[root@seconary test_diff]# 


修改左檔案file1.txt
[root@seconary test_diff]# more file1.txt
mynewly
birthday
is


比較2個檔案,
[root@seconary test_diff]# diff file1.txt file2.txt
1c1 --分為3個部分,1表示左檔案第1行記錄,c表示是改變,1表示左檔案的第1條記錄變成左檔案第1條記錄
< mynewly --分為2個部分,變化後的行內容
---  --表示左檔案和右檔案
> my  --分為2個部分,變化前的行內容


修改左檔案
[root@seconary test_diff]# more file1.txt
mynewly
birthday
isthird


比較2個檔案
[root@seconary test_diff]# diff file1.txt file2.txt
1c1
< mynewly
---
> my
3c3
< isthird
---
> is


測試下左檔案新增記錄,即刪除deletion
[root@seconary test_diff]# more file1.txt
col1
col2
col3
[root@seconary test_diff]# 
[root@seconary test_diff]# more file2.txt
col1
col2
col3
[root@seconary test_diff]#


[root@seconary test_diff]# more file1.txt
col1
col2
col3
newaddrecord
[root@seconary test_diff]# 


[root@seconary test_diff]# diff file1.txt file2.txt
4d3
< newaddrecord
[root@seconary test_diff]# 


測試下左檔案刪除記錄,可見變化標識為a,即增加addition
[root@seconary test_diff]# more file1.txt
col1
col3
[root@seconary test_diff]# 


[root@seconary test_diff]# diff file1.txt file2.txt
1a2
> col2
[root@seconary test_diff]# 


參考資料

http://blog.chinaunix.net/uid-26000296-id-3507646.html

個人簡介:


8年oracle從業經驗,具備豐富的oracle技能,目前在國內北京某專業oracle服務公司從事高階技術顧問。
   
   服務過的客戶:
          中國電信
          中國移動
          中國聯通
          中國電通
          國家電網
          四川達州商業銀行
          湖南老百姓大藥房
          山西省公安廳
          中國郵政
          北京302醫院     
          河北廊坊新奧集團公司
  
 專案經驗:
           中國電信3G專案AAA系統資料庫部署及最佳化
           中國聯通CRM資料庫效能最佳化
           中國移動10086電商平臺資料庫部署及最佳化
           湖南老百姓大藥房ERR資料庫sql最佳化專案
           四川達州商業銀行TCBS核心業務系統資料庫模型設計和RAC部署及最佳化
           四川達州商業銀行TCBS核心業務系統後端批處理儲存過程功能模組編寫及最佳化
           北京高鐵訊號監控系統RAC資料庫部署及最佳化
           河南宇通客車資料庫效能最佳化
           中國電信電商平臺核心採購模組表模型設計及最佳化
           中國郵政儲蓄系統資料庫效能最佳化及sql最佳化
           北京302醫院資料庫遷移實施
           河北廊坊新奧data guard部署及最佳化
           山西公安廳身份證審計資料庫系統故障評估
         
 聯絡方式:
          手機:18201115468
          qq   :   305076427
          qq微博: wisdomone1
          新浪微博:wisdomone9
          qq群:275813900    
          itpub部落格名稱:wisdomone1    http://blog.itpub.net/9240380/

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-1816201/,如需轉載,請註明出處,否則將追究法律責任。

相關文章