1. 程式人生 > >Linux diff tr tee 命令

Linux diff tr tee 命令

linux命令

diff比較兩文件或目錄的不同之處

而且都是以第一個文件來作為操作對象:

第一個文件與第二個文件相比多的,要刪除,少的要增加。就是最後會把第一個文件變得的第二個文件一樣。

舉例兩文件1.txt2.txt

技術分享圖片

技術分享圖片

1d0:第一個文件第一行刪除才和第二個文件第0行一樣(才就是最開頭行)

< Hi,

2a2:第一個文件第二行增加才和第二個文件第二行一樣

> Hi,

4,5c4:第一個文件第四,五行改變才和第二個文件第四行一樣

< I am fine,

< Thank you.

---

> I am fine.

'<'代表刪除的行,而'>'代表添加的行。

技術分享圖片

y--side-by-side  以並列的方式顯示文件的異同之處。

-W<寬度>--width<寬度>  在使用-y參數時,指定欄寬。

|”表示前後2個文件內容有不同

<”表示後面文件比前面文件少了1行內容

>”表示後面文件比前面文件多了1行內容


技術分享圖片

-c  顯示全部內文,並標出不同之處。

“+” 表示後面的文件比前面多了1行內容

“-” 表示後面的文件比前面少了1行內容

“!” 表示前後2個文件內容有不同

"---"表示變動前的文件,"+++"表示變動後的文件


技術分享圖片

-q--brief  僅顯示有無差異,不顯示詳細的信息。

技術分享圖片

-u,-U--unified=  以合並的方式來顯示文件內容的不同。

前面的"-1,5"分成三個部分:減號表示第一個文件,"1"表示第1行,"5"表示連續5行。合在一起,就表示下面是第一個文件從第1行開始的連續5行。同樣的,"+1,4"表示變動後,成為第二個文件從第1行開始的連續4行。

如何理解,下圖:

技術分享圖片

技術分享圖片

如果兩個文件含有相同的文本但是大小寫不同,diff命令仍會默認報告它不同

-i 忽略大小寫

但這樣就會沒有輸出生成,因為當兩個文件相同時的默認行為,如果想看到提示說相同的話:

-s 選項報告兩個文件相同


技術分享圖片

使用 -b 忽略空格

比較兩個文件不同,並生產補丁

技術分享圖片


除了文件外,diff命令還可以比較兩個目錄

技術分享圖片


vimdiff

只有一個文件中有的行,顏色相對

兩個文件中都存在,但是包含差異的行為一種顏色,引起差異還會加字體背景

技術分享圖片

ctrl + w + w 左右切換 或者上下切換

dp 把左邊光標所在的行復制到右邊對應的行

do 把右邊的復制到左邊光標所在的對應的行

https://jingyan.baidu.com/article/ae97a646da05debbfd461d33.html



tr

容易地實現 sed 的許多最基本功能。

可以用一個字符來替換另一個字符,或者可以完全除去一些字符。也可以用來除去重復字符

技術分享圖片

逐個字符的替換且替換不修改源文件


技術分享圖片

小寫替換成大寫


技術分享圖片

去除Z的字符


技術分享圖片

刪除換行符

PS:不可見字符都得用轉義字符來表示的,這個都是統一的



技術分享圖片

將換行符替換成:


技術分享圖片

除了a-z 以及換行符以外的,都刪除

除了1-2數字以外的,都刪除


技術分享圖片

刪除重復的


tee

我們平常比如 ls >a.txt,這時我們就不能看到輸出了

ls | tee /tmp/ls.txt

-a 追加輸入


技術分享圖片

技術分享圖片

把標準錯誤也輸入到文件裏


技術分享圖片

雖然重復打印,但追加到文件中的只有一次



Linux diff tr tee 命令