[linux]按部就班學運維-基礎命令篇-diff

寫在前面: 博主是一名投身教培事業的標準八零後,叛逆並且追求自由,暱稱取自於蘇軾的《水調歌頭》中的「高處不勝寒」,時刻提醒本身要耐得住寂寞,受的了孤獨,在技術的道路上,不畏艱難,一往無前。 我已經將所有的linux運維體系發到了gitee上,https://gitee.com/gaosh08/LinuxFamily 歡迎star,投稿,交流。mysql


文章目錄


小手一抖,點贊走起linux

diff的基本語法及參數

diff的用法,diff後面直接加選項,主要用來逐行對比文件
參數:git

  • -<行數>  指定要顯示多少行的文本。此參數必須與-c或-u參數一併使用。
  • -a或–text  diff預設只會逐行比較文本文件。
  • -b或–ignore-space-change  不檢查空格字符的不一樣。
  • -B或–ignore-blank-lines  不檢查空白行
  • -c  顯示所有內文,並標出不一樣之處。
  • -H或–speed-large-files  比較大文件時,可加快速度。
  • -i或–ignore-case  不檢查大小寫的不一樣。
  • -u,-U<列數>或–unified=<列數>  以合併的方式來顯示文件內容的不一樣。
  • -v或–version  顯示版本信息。
  • -w或–ignore-all-space  忽略所有的空格字符。
  • –help  顯示幫助。

舉栗子:sql

1. 比較兩個文件

[root@zmgaosh ~]# diff passwd passwd12a3> aaa[root@zmgaosh ~]#

在這裏插入圖片描述

2. 並排格式輸出

[root@zmgaosh ~]# diff passwd passwd1 -y -W 10tc      tc
my      my>   aa[root@zmgaosh ~]#

在這裏插入圖片描述
注: 這裏的
-y表示並排顯示
-W 指定行寬編程

"<"表示後面文件比前面文件少了1行內容
">"表示後面文件比前面文件多了1行內容運維

3. -u 以合併文件的方式顯示不一樣

[root@zmgaosh ~]# diff -u passwd passwd1--- passwd      2020-06-19 20:17:37.535217346 +0800
+++ passwd1     2020-06-19 20:17:57.605397654 +0800
@@ -1,2 +1,3 @@
 tcpdump:x:72:72::/:/sbin/nologin
 mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
+aaa

注:
—開頭的是原始文件tcp

+++開頭的是目標文件ide

以-開頭的是隻出如今原始文件中的linux運維

以+開頭的是隻出如今目標文件中的學習

以空格 開始的行是在目標文件和原始文件中都出現的行

補充: 三個文本比較命令:

comm , diff, patch

comm: 比較相同的文本,特色是: 若是文本中有空格就沒法識別

[root@zmgaosh ~]# cat a.txt aaa
   bbb[root@zmgaosh ~]# cat b.txtaaa
bbb[root@zmgaosh ~]# comm a.txt b.txtaaa   (輸出形同的文本)
        bbb(輸出不一樣的文本)
   bbb[root@zmgaosh ~]#

其實bbb是相同的,只是一個有空格,一個沒有空格,會被當成不一樣來顯示。

patch 補丁:

一般在更新幾百萬行的項目時,若是隻有幾行有變化,所有打包過來根本是不可能的,由於它太大了,並且所有拷過來也沒有意義,最大的問題是人力難以對比。 這個時候咱們能夠用到patch

patch主要用於修補文件

舉例:

建立兩個文件

[root@zmgaosh ~]# cat a.txt11111
11111
11111
11111[root@zmgaosh ~]# cat b.txt22222
11111
22222
11111

使用diff 建立補丁 b.txt.patch

[root@zmgaosh ~]# diff -uN a.txt b.txt > b.txt.patch[root@zmgaosh ~]# cat b.txt.patch--- a.txt       2020-06-19 20:54:54.115330192 +0800
+++ b.txt       2020-06-19 20:55:34.924697772 +0800
@@ -1,4 +1,5 @@
+22222
 11111
+22222
 11111
-11111
-11111
+

備註:
補丁頭是分別由—/+++開頭的兩行,用來表示要打補丁的文件。—開頭表示舊文件,+++開頭表示新文件。
*diff命令會在補丁文件中記錄這兩個文件的首次建立時間,以下
— a.txt 2020-06-19 20:54:54.115330192 +0800
+++ b.txt 2020-06-19 20:55:34.924697772 +0800

接下來開始打補丁:

[root@zmgaosh ~]# patch -p0 < b.txt.patch patching file a.txt[root@zmgaosh ~]# cat a.txt 22222
11111
22222
11111

能夠看到a.txt變得和b.txt同樣了

咱們也能夠去除補丁

[root@zmgaosh ~]# patch -RE -p0 < b.txt.patch patching file a.txt[root@zmgaosh ~]# cat a.txt11111
11111
11111
11111[root@zmgaosh ~]#

能夠看到又恢復到了原版本的a.txt

後記

學習Linux基礎命令,最好的方法就是根據一個命令去聯想相似的命令的使用方法,你會發現不少參數,雖然命令不一樣,但表示的意思基本相同。

計算機行業,不管是編程仍是運維,都須要多練習,熟能生巧。

相關文章
相關標籤/搜索