• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
Office 指南

Office 指南

辦公室工作實用教學

  • Excel
  • Word
  • PowerPoint
  • Windows
  • PowerShell
  • R

Linux 比較兩個相似檔案的內容差異教學與範例

介紹如何在 Linux 中使用 pr、diff、paste 與 column 指令,顯示與比較兩個相似檔案的內容差異。

兩個相似檔案

假設我們有 file1.txt 與 file2.txt 兩個內容很相似的檔案,想要比較其中的差異:

# 查看 file1.txt 檔案內容
cat file1.txt
acpi
adduser.conf
alsa
alternatives
anacrontab
apache2
apg.conf
apm
apparmor
# 查看 file2.txt 檔案內容
cat file2.txt
acpi
adduser
alsa
alternatives
anacrontab
apg.conf
apm
apparmor
apparmor.d

如果只用 cat 輸出內容,很難一眼看出兩個檔案的差異在哪裡。

diff 指令

diff 是專門用來比較檔案差異的工具,搭配 -y 或 --side-by-side 參數可以將兩個檔案以左右並排的方式呈現,方便查看差異的地方:

# 左右並排,比較差異
diff -y file1.txt file2.txt
acpi								acpi
adduser.conf						      |	adduser
alsa								alsa
alternatives							alternatives
anacrontab							anacrontab
apache2							      <
apg.conf							apg.conf
apm								apm
apparmor							apparmor
							      >	apparmor.d

在這個輸出中,大於(>)與小於(<)的符號代表新增與移除的行,而 | 符號則是代表有修改過的行。

如果感覺輸出的板面太寬或是太窄,可以使用 -W 或 --width 參數來調整版面寬度:

# 設定輸出版面寬度為 40
diff -W 40 -y file1.txt file2.txt
acpi			acpi
adduser.conf	   |	adduser
alsa			alsa
alternatives		alternatives
anacrontab		anacrontab
apache2		   <
apg.conf		apg.conf
apm			apm
apparmor		apparmor
		   >	apparmor.d

sdiff 指令

sdiff 指令就相當於 diff 加上 -y 參數,也可以輸出左右並排的差異內容:

# 左右並排,比較差異
sdiff file1.txt file2.txt
acpi								acpi
adduser.conf						      |	adduser
alsa								alsa
alternatives							alternatives
anacrontab							anacrontab
apache2							      <
apg.conf							apg.conf
apm								apm
apparmor							apparmor
							      >	apparmor.d

若要調整輸出版面寬度,則可使用 -w 或 --width 參數:

# 設定輸出版面寬度為 40
sdiff -w 40 file1.txt file2.txt
acpi			acpi
adduser.conf	   |	adduser
alsa			alsa
alternatives		alternatives
anacrontab		anacrontab
apache2		   <
apg.conf		apg.conf
apm			apm
apparmor		apparmor
		   >	apparmor.d

colordiff 指令

colordiff 指令是 diff 的彩色版本,使用的方式跟 diff 相同:

# 彩色排版,左右並排,比較差異
colordiff -W 40 -y file1.txt file2.txt
colordiff 彩色排版,左右並排,比較差異
colordiff 彩色排版,左右並排,比較差異

vimdiff 與 gvimdiff 指令

若習慣使用 Vim 編輯器的人,可以使用 vimdiff 來查看兩個檔案的差異:

# 左右並排,比較差異
vimdiff file1.txt file2.txt
vimdiff 左右並排,比較差異
vimdiff 左右並排,比較差異

或是使用 GVim 附帶的 gvimdiff 也可以:

# 左右並排,比較差異
gvimdiff file1.txt file2.txt
gvimdiff 左右並排,比較差異
gvimdiff 左右並排,比較差異

paste 與 column 指令

如果只是要單純將兩個檔案的每一行串接在一起,合併輸出,可以使用 paste 指令,而為了使輸出的資料更容易閱讀,可以再搭配 column 將資料轉為對齊的表格:

# 合併 file1.txt 與 file2.txt,並以表格方式輸出
paste file1.txt file2.txt | column -t -s $'\t'
acpi          acpi
adduser.conf  adduser
alsa          alsa
alternatives  alternatives
anacrontab    anacrontab
apache2       apg.conf
apg.conf      apm
apm           apparmor
apparmor      apparmor.d

參考資料

  • Baeldung:Displaying Files Side by Side in Linux

分類:Linux 標籤:Bash

讀者互動方式

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

主要資訊欄

搜尋

近期文章

  • C++ 語言使用 Crypto++ 實作 RSA 數位簽章教學與範例
  • C++ 語言使用 Crypto++ 實作 RSA-OAEP 搭配 SHA256 加密教學與範例
  • C++ 語言使用 Crypto++ 實作 AES 加密、解密、認證加密教學與範例
  • C++ 語言使用 Crypto++ 實作 MD5、SHA1、SHA2、BLAKE2 雜湊教學與範例
  • Ubuntu Linux 安裝、使用 Crypto++ 加密函式庫教學與範例
  • C 語言使用 OpenSSL 實作橢圓曲線 ECDH 金鑰交換教學與範例
  • Python 以 eciespy 實作 ECC 非對稱式加密方法教學與範例
  • C 語言使用 OpenSSL 實作 PBKDF2 教學與範例

推薦網站

  • Udemy 線上教學課程
  • Coursera 線上教學課程

關注本站

  • 電子郵件
  • Facebook

公益

  • 家扶基金會
  • 台灣世界展望會
  • Yahoo 奇摩公益
  • igiving 公益網
  • 兒福聯盟

Copyright © 2021 · Office Guide