0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux操作環(huán)境:diff實(shí)現(xiàn)文本比對(duì)方法

如意 ? 來源:良許Linux微信公眾號(hào) ? 作者:良許 ? 2020-09-16 16:12 ? 次閱讀

我們在寫代碼的過程中,免不了會(huì)對(duì)代碼進(jìn)行一些修修改改。但經(jīng)常會(huì)出現(xiàn)改著改著,就不知道改完后與源文件的差異是怎樣的。這里,我們就需要一個(gè)文本比對(duì)工具來進(jìn)行文本比對(duì)。

有經(jīng)驗(yàn)的程序員都知道,Windows下有個(gè)很好用的文本比對(duì)工具——BeyondCompare。但它是收費(fèi)軟件,很多正規(guī)的公司是不允許使用破解軟件的。而且,它也只能在Windows下使用,沒有Linux版本。

本文所介紹的文本比對(duì)方法,無需任何軟件,只需一個(gè)Linux命令。學(xué)會(huì)這個(gè)命令,就再也不怕你不會(huì)文本比對(duì)了。

這個(gè)Linux命令就是diff命令。

diff是Unix系統(tǒng)的一個(gè)很重要的工具程序。它用來比較兩個(gè)文本文件的差異,是代碼版本管理的基石之一。

首先我們來看它的基本命令格式。

diff [OPTION]。.. FILES

很簡單吧。不過它的選項(xiàng)相當(dāng)多,多到你懷疑人生。我們暫且不管那么多,先學(xué)一些最常用的,畢竟時(shí)間要花在刀刃上。

-b —— 忽略一行中的空字符的區(qū)別(例如“Hello World!” 與 “Hello World!!”認(rèn)為是一樣的)

-B —— 忽略空白行

-i —— 忽略大小寫的不同

-r —— 如果diff后面接的目錄時(shí),會(huì)遞歸比較子目錄中的文件不同

我們再來具體看看如何進(jìn)行文本比較。

diff命令的輸出格式有三種:

正常格式(normal diff)

上下文格式(context diff)

合并格式(unified diff)

我們通過實(shí)例詳細(xì)介紹這三種輸出格式。比如我們現(xiàn)在有個(gè)文件a.c,它的內(nèi)容如下:

Linux操作環(huán)境:diff實(shí)現(xiàn)文本比對(duì)方法

現(xiàn)在我們復(fù)制一份,命名為b.c,并將第3行小寫的“hello”改為大寫“HELLO“,如下:

Linux操作環(huán)境:diff實(shí)現(xiàn)文本比對(duì)方法

1. 正常格式

正常格式下我們無需加任何選項(xiàng),直接如下比對(duì)就好:

diff a.c b.c

執(zhí)行完的結(jié)果如下:

Linux操作環(huán)境:diff實(shí)現(xiàn)文本比對(duì)方法

我們一行一行來解釋上圖的含義。

第一行:3c3

第一個(gè)3表示文件a.c中第3行有變化,后面的3表示a.c通過變化成為b.c中的第3行。中間的c就是具體的變化了。c表示改變(change),其它類型還有d刪除(delete),a增加(addition)。

第二行:《 hello world!

表示a.c文件中去除第3行的內(nèi)容,其中小于號(hào)表示去除。

第三行:------

分隔線

第四行:》 HELLO world!

表示b.c文件中增加第3行的內(nèi)容,其中大于號(hào)表示增加。

2. 上下文格式

由于在正常格式下,提示信息比較少,我們無法快速定位所修改的地方,經(jīng)常需要打開文件才知道修改細(xì)節(jié)。所以,為了給出更多的信息,引入了上下文格式。它的使用命令如下:

diff -c a.c b.c

其中,c表示context,即上下文的意思。

Linux操作環(huán)境:diff實(shí)現(xiàn)文本比對(duì)方法

上圖的輸出結(jié)果的具體含義如下:

第1行和第2行表示修改前及修改后的文件及更新時(shí)間。下面的 1,4 *表示a.c文件顯示的從第1行開始到第4行為止的內(nèi)容。hello world前的嘆號(hào)(?。┍硎驹撔杏懈膭?dòng),如果該行被刪除,則為減號(hào)(-),如果該行被增加,則為加號(hào)(+)。后面幾行的含義類似。

3. 合并格式

這種格式是正常格式與上下文格式的綜合版,同時(shí)這種格式也是git diff所采用的格式。使用這種格式的命令是:

diff -u a.c b.c

Linux操作環(huán)境:diff實(shí)現(xiàn)文本比對(duì)方法

上圖的輸出結(jié)果詳細(xì)含義如下:

第1行和第2行表示修改前及修改后的文件及更新時(shí)間。后面的-hello world!表示原文件a.c里的內(nèi)容,+HELLO world!表示b.c里的內(nèi)容。

除了以上三種格式外,還有另外一直更直觀的方式——并排格式。這種顯示格式的命令格式如下:

diff a.c b.c -y -W 50

Linux操作環(huán)境:diff實(shí)現(xiàn)文本比對(duì)方法

這種格式就是以并列的格式進(jìn)行顯示,也很直觀明了。第3行里,有個(gè)“|”符號(hào),表示這行有更改。另外,如果前面是“《”,表示后面文件比前面文件少了1行內(nèi)容;如果是”》“,表示后面文件比前面文件多了1行內(nèi)容。
責(zé)編AJX

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11207

    瀏覽量

    208712
  • 文本
    +關(guān)注

    關(guān)注

    0

    文章

    118

    瀏覽量

    17055
  • 操作環(huán)境
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    7047
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    詳解Linux上兩個(gè)超有用重要的文本操作命令

    Linux 通過大量的命令使得文本操作和處理非常容易。像 tr 和 fmt 這樣的命令行工具可以幫助您從終端更改、格式化和修改文本文件。
    發(fā)表于 11-11 09:14 ?516次閱讀

    Linux操作系統(tǒng)交叉編譯環(huán)境的建立方法

    基于linux操作系統(tǒng)的應(yīng)用開發(fā)環(huán)境一般是由目標(biāo)系統(tǒng)硬件(開發(fā)板)和宿主PC機(jī)所構(gòu)成。目標(biāo)硬件開發(fā)板用于運(yùn)行操作系統(tǒng)和系統(tǒng)應(yīng)用軟件,而目標(biāo)板所用到的
    發(fā)表于 07-15 15:05

    Linux中TCP的通信過程以及實(shí)現(xiàn)方法

    【嵌入式】Web1.操作內(nèi)容2.操作步驟1.操作內(nèi)容理解Linux中TCP的通信過程以及實(shí)現(xiàn)方法
    發(fā)表于 12-16 08:01

    linux文本編輯器工具下載

    linux文本編輯工具:VIM是優(yōu)秀的開源文本編輯器,是Linux/UNIX用戶非常常用的文本編輯工具.
    發(fā)表于 06-02 22:30 ?31次下載

    插入式渦街流量計(jì)比對(duì)方法探討

    插入式渦街流量計(jì)比對(duì)方法探討Investigation on a Method of Intercomparison of Insertion Vortex Flowmeter二島 ‘ 蕊(中石化金陵分公司計(jì)童站,南京210033)摘要簡單介紹了插入式渦街流量
    發(fā)表于 10-18 14:34 ?16次下載

    基于Linux平臺(tái)DCS操作站的實(shí)現(xiàn)

    介紹在INFI-90 系統(tǒng)中用Linux 實(shí)現(xiàn)DCS 操作站的方法、原理及實(shí)施過程。關(guān)鍵詞: Linux;DCS;X Window;
    發(fā)表于 08-31 10:32 ?16次下載

    linux操作系統(tǒng)交叉編譯環(huán)境的建立方法

    基于linux操作系統(tǒng)的應(yīng)用開發(fā)環(huán)境一般是由目標(biāo)系統(tǒng)硬件(開發(fā)板)和宿主PC機(jī)所構(gòu)成。目標(biāo)硬件開發(fā)板用于運(yùn)行操作系統(tǒng)和系統(tǒng)應(yīng)用軟件,而目標(biāo)板所用到的
    發(fā)表于 09-14 17:45 ?1082次閱讀

    LINUX環(huán)境下CLIPS動(dòng)態(tài)鏈接庫的實(shí)現(xiàn)方法

    LINUX環(huán)境下,為了簡便、快捷地制作出CLIPS動(dòng)態(tài)鏈接庫,本文采用了CNU AUTOTOOLS把CLIPS嵌入式高級(jí)語言編譯成動(dòng)態(tài)鏈接庫的實(shí)現(xiàn)方法,重點(diǎn)研究如何編寫配置信息,利用
    發(fā)表于 04-14 21:18 ?30次下載

    【新專利介紹】三表位電能表自助比對(duì)裝置及其比對(duì)方法

    今天為大家介紹一項(xiàng)國家發(fā)明授權(quán)專利——三表位電能表自助比對(duì)裝置及其比對(duì)方法。該專利由貴州長征電器成套有限公司申請(qǐng),并于2018年2月9日獲得授權(quán)公告。
    發(fā)表于 07-10 15:01 ?795次閱讀

    用于寬頻電能表計(jì)量運(yùn)行誤差的實(shí)時(shí)比對(duì)方法

    今天為大家介紹一項(xiàng)國家發(fā)明授權(quán)專利——一種用于寬頻電能表計(jì)量運(yùn)行誤差的實(shí)時(shí)比對(duì)方法。該專利由國家電網(wǎng)公司、江蘇省電力公司、江蘇省電力公司電力科學(xué)研究院、福建億榕信息技術(shù)有限公司申請(qǐng),并于2017年8月8日獲得授權(quán)公告。
    發(fā)表于 01-26 09:58 ?1042次閱讀
    用于寬頻電能表計(jì)量運(yùn)行誤差的實(shí)時(shí)<b class='flag-5'>比對(duì)方法</b>

    簡述Linux文本查看命令

    Linux 常用命令中,除了 cat 還有很多其他用于文本查看的命令。
    的頭像 發(fā)表于 08-11 11:17 ?3492次閱讀

    如何在Linux環(huán)境實(shí)現(xiàn)Python環(huán)境的搭建

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何在Linux環(huán)境實(shí)現(xiàn)Python環(huán)境的搭建。
    發(fā)表于 08-24 12:12 ?14次下載
    如何在<b class='flag-5'>Linux</b><b class='flag-5'>環(huán)境</b>下<b class='flag-5'>實(shí)現(xiàn)</b>Python<b class='flag-5'>環(huán)境</b>的搭建

    使用CAM350比對(duì)Gerber基本操作的教程

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用CAM350比對(duì)Gerber基本操作的教程
    發(fā)表于 10-22 08:00 ?0次下載
    使用CAM350<b class='flag-5'>比對(duì)</b>Gerber基本<b class='flag-5'>操作</b>的教程

    紅外線測溫儀自校準(zhǔn)誤差比對(duì)方法的研究

    電子發(fā)燒友網(wǎng)站提供《紅外線測溫儀自校準(zhǔn)誤差比對(duì)方法的研究.pdf》資料免費(fèi)下載
    發(fā)表于 10-24 14:11 ?3次下載
    紅外線測溫儀自校準(zhǔn)誤差<b class='flag-5'>比對(duì)方法</b>的研究

    Linux環(huán)境變量配置方法

    Linux環(huán)境變量配置分為設(shè)置永久變量和臨時(shí)變量兩種。環(huán)境變量設(shè)置方法同時(shí)要考慮環(huán)境Shell類型,不同類型的SHELL設(shè)置臨時(shí)變量
    的頭像 發(fā)表于 10-23 13:39 ?97次閱讀