diff

diff

diff 命令比較文本檔案。它能比較單個檔案或者目錄內容。

diff 命令只有當輸入為文本檔案時才有效。

如果指定了 Directory1 和 Directory2 參數,diff 命令比較兩個目錄下名字相同的文本檔案。列出不同的二進制檔案、公共子目錄和只在一個目錄出現的檔案。

diff命令用於比較兩個檔案的差異,它可以被製作成補丁檔案,使用patch命令對相應的檔案打補丁。

基本介紹

  • 外文名:diff
  • 用途語法:比較兩個檔案的內容
  • 描述:diff 命令比較文本檔案
  • 標誌:將每行末尾當作單個新行標記處理
  • diff 命令:只有當輸入為文本檔案時才有效
Linux,用途語法,描述,典型輸出,標誌,示例,使用,DIFF線,MATLAB,函式簡介,程式示例,

Linux

用途語法

比較文本檔案。
語法
比較兩個檔案的內容
diff [ -c | -C Lines | -D [ String ] | -e | -f | -n ] [ -b ] [ -i] [ -t ] File 1 File2
diff [ -h ] [ -b ] File 1 File2
排序字典的內容並比較不同的檔案
diff [ -c | -C Lines | -e | -f | -n ] [ -b ] [ -i ] [ -l ] [ -r ] [ -s ] [ -S File ] [ -t ] [ -w ] Directory1 Directory2
diff [ -h ] [ -b ] Directory1 Directory2

描述

diff 命令比較文本檔案。它能比較單個檔案或者目錄內容。
注:
diff 命令只有當輸入為文本檔案時才有效。
如果指定了 Directory1 和 Directory2 參數,diff 命令比較兩個目錄下名字相同的文本檔案。列出不同的二進制檔案、公共子目錄和只在一個目錄出現的檔案。
當 diff 命令運行於常規檔案時,且當目錄比較期間比較不同的文本檔案時,diff 命令顯示檔案中哪些行必須更改以保持它們一致。如果 File1 和 File2 參數都不是目錄,其中之一可能給定負號“-”,以採用標準輸入。如果 File1 參數是目錄,則使用目錄中與 File2 參數指定的檔案名稱一致的那個檔案。

典型輸出

Lines Affected in File1 Action Lines Affected in File2
Number1 a Number2[,Number3]
Number1[,Number2] d Number3
Number1[,Number2] c Number3[,Number4]
這些行類似於 ed 子命令將 File1 檔案轉換成 File2 檔案。Action 字母之前的數字指 File1;後面的數字則指 File2。因此,通過將 a 替換成 d,從右往左讀,您就能知道如何將 File2 轉換成 File1。在 ed 命令下,相同的對(即 Number1 = Number2)會簡略為單個數字。
下列每一行,diff 命令顯示以 <:(小於符號,冒號)開始的第一個檔案中的所有受影響行,然後顯示以 >(大於符號)開始的第二個檔案中的所有受影響行。
退出值 0 表示沒有不同,1 表示找到不同處,2 表示出錯。
注:
如果指定了多於一個的 -c、-C、-D、-e、-f 或者 -n 標誌,命令行上的最後一個具有優先權。系統不發出錯誤訊息。

標誌

-b 將每行末尾當作單個新行標記處理(忽略新行字元前的空格字元)的任意數量空格字元與其他空格字元串(除了新行標記)同樣地比較。
-C Lines 啟動 diff 命令,但只比較 Lines 變數指定的行數。-C 標誌稍微修改輸出。輸出以檔案的相同部分和創建日期開始。每個更改以 12 個 *(星號)組成的行分隔。從 File1 中要刪的行以 -(減號)標記,File2 中要添加的行以 +(加號)標記。從一個檔案更改到另一個檔案的行在兩個檔案中都以 !(驚嘆號)標記。在每一個檔案的指定上下文行中的更改會被整組一起輸出。
-c 啟動 diff 命令,比較三行上下文。-c 標誌稍微修改輸出。輸出以涉及檔案的標識和它們的創建日期開始。每個更改以 12 個 *(星號)組成的行分隔。File1 中要刪的行以 -(減號)標記,要被添加到 File2 的行以 + (加號)標記。從一個檔案更改到另一個檔案的行在兩個檔案中都以 !(驚嘆號)標記。在每一個檔案的指定上下文行中的更改會被整組一起輸出。
-D [ String ] 使得 diff 命令在標準輸出上建立一個 File1 和 File2 的合併版本。包含了 C 預處理器控制項以便沒有定義 String 的結果編譯等同於編譯 File1,同時定義 String 產生 File2。
-e 以適合 ed 編輯器的格式進行輸出,將 File1 轉換成 File2。當使用這個標誌時,以下 shell 程式可以幫助維護一個檔案的多個版本。手頭僅需要由 diff 命令生成的一個祖先檔案($1)和一系列版本的 ed 腳本($2、$3、...)。標準輸出上的最近版本如下:
(shift; cat $*; echo '1,$p') | ed - $1
當使用 -e 標誌比較目錄時,輸出上添加了額外的命令,因此,結果是一個 shell 腳本,將兩個目錄上的共有文本檔案從 Directory1 上的狀態轉換到 Directory2 上的狀態。
注:
由 -e 或 -f 標誌產生的編輯腳本無法創建由單個組成的行。(周期)。
-f 以不適合 ed 編輯器的格式創建輸出,按照在 -e 標誌下產生的逆向順序顯示從 File1 到 File2 的轉換的必要修改。
-h 如果要更改的部分比較短而且分隔清晰,則執行備用的比較可能會更快。-h 標誌可用於任意長度的檔案。-c、-C、-D、-e、-f 和 -n 標誌無法與 -h 標誌一起使用。當使用 -h 標誌時,除了 -b 標誌,其他標誌一律忽略。
-i 忽略字母大小寫。例如,小寫 a 被認為同大寫 A 一樣。
-l 長輸出格式。每個由文本檔案比較 diff 命令獲得的結果通過命令 pr 輸送分頁。在報告所有文本檔案不同之處後,其他不同之處將被記憶和總結。
-n 產生類似於 -e 標誌創建的輸出,但是順序相反,而且在每一插入或刪除命令上進行更改計數。這是修訂控制項系統(RCS)所用的格式。
-r 使 diff 命令的應用程式遞歸到遇到的公共子目錄。
-s 報告相同的檔案,否則不提。
-S [ File ] 當比較目錄時,忽略在 File 變數指定的檔案之前整理名稱的檔案。-S 標誌只用於 Directory1 和 Directory2 參數指定的目錄。如果您將 -r 標誌與 -S 標誌一起使用, -S 標誌在 Directory1 和 Directory2 子目錄中不進行遞歸。
-t 在輸出行擴展制表符。典型輸出或者 -c 標誌輸出會添加字元到每一行首,這會影響初始行的縮進,使得輸出列表難以解釋。該標誌則保留原始源的縮進。
-w 忽略所有空格和制表符,將所有其他空白字元串視為一致。例如,if ( a == b ) 與 if(a==b) 相等。
退出狀態
此命令返回下列退出值:
0 未找到不同處。
1 找到不同處。
>1 發生錯誤。

示例

1. 要比較兩個檔案,請輸入:
diff chap1.back chap1
只顯示檔案 chap1.bak 和 chap1 的不同之處。
2. 要比較兩個檔案,但是忽略空格字元個數的區別,請輸入:
diff -w prog.c.bak prog.c
如果兩行僅僅空格和制表符數目不同,則 diff -w 目錄認為它們相等。
3. 要創建一個包含 ed 命令可以用於從另一個檔案重構檔案的命令的檔案,請輸入:
diff -e chap2 chap2.old >new.to.old.ed
這將創建一個名為 new.to.old.ed 的檔案,它包含 ed 子命令,把 chap2 轉換回在 chap2.old 中找到的文本版本。在大多數情況下,new.to.old.ed 比 chap2.old 要小很多。您可以通過刪除 chap2.old 以節省磁碟空間,您也可以在任何時候重建它,通過輸入:
(cat new.to.old.ed ; echo '1,$p') | ed - chap2 >chap2.old
括弧中的命令把 1,$p 添加到編輯命令的末尾,傳送給 ed 編輯器。1,$p 使得 ed 命令在編輯完成後將檔案寫到標準輸出。這一修改的命令序列然後從管道傳給 ed 命令(| ed),編輯器讀取它作為標準輸入。- 標誌使 ed 命令不顯示檔案大小以及其他附加信息因為它們易與 chap2.old 的文本混餚。
檔案
/usr/bin/diff 包含 diff 命令。

使用

1) diff/patch這對工具在數學上來說,diff是對2個集合求差,patch是求和
diff A B > C 生成A和B的diff檔案C
patch A C 給A打上diff檔案得到B
patch -R B C B還原為A
2) 核心補丁
生成
diff -uNr linux-2.6.xxx linux-2.6.xxx.1 > diff.patch
升級
cp diff.patch linux-2.6.xxx/.
cd linux-2.6.xxx
patch -p1 < diff.patch

DIFF線

DIFF線 收盤價短期、長期指數平滑移動平均線間的差
DEA線  DIFF線的M日指數平滑移動平均線
MACD線 DIFF線與DEA線的差,彩色柱狀線
參數:SHORT(短期)、LONG(長期)、M 天數,一般為12、26、9
用法:
1.DIFF向上突破DEA,買入信號。
2.DIFF向下跌破DEA,賣出信號。
3.DEA線與K線發生背離,行情反轉信號。
4.分析MACD柱狀線,由紅變綠(正變負),賣出信號;由綠變紅,買入信號
以上只是基本知識,具體內容很複雜,該指標要與K線系統,成交量系統配合看.它即使獨立看,也是很有講究的,金叉,死叉有零上與零下之分,前後有背離之分,紅柱樁與黃白線的關係,綠柱樁與黃白線的關係,黃白線在柱樁里運行和柱樁外運行,也是有學問的.山包與山包的關係,大山包與小山包的關係,月線,周線,日線,分時線的看盤方法也是不同的.
另外我要強調的是MACD在各種指標中,是最好的指標,非常複雜,非常豐富,但又非常管用.也就是說在錢龍一出現就排在第一的道理.
移動平均線PMA是量的一種表現形式.比如指數的三日移動平均線,首先取得連
續三日的三個指數,計算其平均值A,然後後移.去掉最先一個指數,增加新一日一個
指數,再計算三個指數的平均值B.如此移動計算,得到一條三日移動平均線。同理,可
得五日,六日,十日,十三日,三十日,七十日,二百日等移動平均線。移動平均線由樣本
數的多少決定了移動變化的急緩。樣本數少,變化較急,稱為快速線,因此多作為短線
指標。樣本數多,變化較緩,稱為慢速線,在樣本數適當多的時候,多作為中線或長線
指標,重要的是, 因為移動平均線是由一定樣本的集合的連續移動計算產生,所以
它的移動方向和速度代表了該集合的整體態勢。這一點,正是人們所要利用的。
1、移動平均線向上或向下,都表示了趨勢的方向,所以一般而言,PMA由下轉
上為買入信號,PMA由上轉下為賣出信號。但PMA日數N的選擇往往決定
了你的買賣是否成功及成效的大小。這是因為,對單條PMA而言,快速線
反映敏感卻顯浮躁, 慢速線反映沉實卻顯呆滯。
然而N的選擇終歸是沒有定論的,不過卻有一條原則,即:選擇N使得PMA逼
近所分析品種的短期,中期和長期的循環周期.這是要具體分析才能確定的。
如果從某一數學模型來考慮,則是套用費波南茨級數3,5,8,13,
21,34, 55, 來確定PMA的N值。
2、當PMA在指數上方時,PMA是指數的壓力線;當PMA 在指數的下方時,
PMA是指數的支持線。一般而言,指數向下跌破PMA為賣出信號,指數向
上升穿PMA為買入信號。
3、美國的專家葛藍碧為此提出八大買賣法則(PMA=200日PMA,)如下:
(1) 買入信號1:PMA下降後出現平盤或回升移動,當價格突破PMA壓力上
升為重要的買入信號。
(2) 買入信號2:PMA仍然上升,但價格卻跌穿PMA的支持線,當價格又向
上時為買入信號。
(3) 買入信號3:價格下跌,但獲PMA良好支持後回升時為買入信號。
(4) 買入信號4:價格在高位跌破了PMA支持線,引發了急速下跌,短期內
價格仍有向PMA回歸的要求,當價格開始向 PMA 回歸反彈時為買入信
號。
(5) 賣出信號1:市勢逆轉,價格跌破PMA支持線時為重要的賣出信號。
(6) 賣出信號2:PMA已處在下降過程中,價格向PMA的回歸反彈上穿PMA
壓力線,當價格復向下時為賣出信號。
(7) 賣出信號3:價格再次向PMA回歸反彈,但被PMA有效壓制後下跌為賣
出信號。
(8) 賣出信號4:價格在低位升穿了PMA壓力線,引發了急速上升,短期內
價格仍有向PMA回歸的要求,當價格開始向PMA回歸整理時為賣出信號。

MATLAB

函式簡介

在matlab中,diff函式用於求導數或者向量和矩陣的比較(詳細說明參見: 調用格式及說明)。在matlab的命令視窗中輸入doc diff或者help diff即可獲得該函式的幫助信息。
調用格式及說明
Y = diff(X)
這裡求函式X的一階導數
Y = diff(X,n)
求函式X的n階導數
Y = diff(X,dim)
求函式X關於變數dim的偏導數
Y = diff(X,n,dim)
求函式X關於dim的n階偏導數
若X為向量,
Y = diff(X)= [X(2)-X(1),X(3)-X(2),...,X(n)-X(n-1)]
求前後兩項之差
若X為矩陣,
Y = diff(X)= [X(2:n,:) - X(1:n-1,:)]
求每列前後兩項之差
相關函式
gradient, prod, sum

程式示例

>> syms x y z;
>> y=x^2+z^2;
>> diff(y)
ans =2*x
>> diff(y,z)
ans =2*z
在這個示例中,定義了三個符號變數x y z,然後令y等於x和z的平方和,然後diff(y)求關於x的偏導數,而diff(y,z) 則是對y求關於z的偏導數。
>> x=[2 3 5 7 12 23]
>> d=diff(x)
d =
1 2 2 5 11
當然X可以是一個矩陣。更多示例請參閱matlab的幫助文檔。
1)diff基本用法:
#diff foo.txt foo1.txt
9c9
< everything
---
> everybody
a表示第一個檔案進行了新增
d表示第一個檔案進行了刪除
c表示第一個檔案進行了修改
<表示第一個檔案的差異
>表示第二個檔案的差異
2)diff生成補丁檔案
假設當前路徑為demo
#mkdir old/a/b/foo.txt
#vi old/a/b/foo.txt
輸入以下信息:
old_line_1
old_line_2
我們準備要對old目錄下的foo.txt進行修改,先複製一份,修改後再製作補丁。
#cp -R old new

vi new/a/b/foo.txt
將原信息修改為:
new_line_1
new_line_2
diff -urN old new > foo.patch
參數詳解
-u 採用統一格式輸出
-r 對目錄進行比較
-N 新檔案作為空檔案進行比較,即新檔案會打入補丁包中
3)patch進行補丁
patch -p0 < foo.patch
參數詳解
-p 表示跳過幾級目錄,0表示無需跳過
這樣就可以對old/a/b/foo.txt打補丁。

相關詞條

熱門詞條

聯絡我們