Linux

如何區分兩個配置文件?

  • October 10, 2012

我有兩個 snmpd.conf 文件,一個在可以工作的伺服器上,一個不工作。如何區分兩個配置文件,同時去除不相關的註釋和換行符?

diff <(grep -v '^#' f1) <(grep -v '^#' f2)

為了避免空行和只包含空格的行,除了具有添加前導空格的單一差異的相同行…

diff -b \
 <(grep -vE '^([ \t]*#|^[ \t]*$)' f1)\
 <(grep -vE '^([ \t]*#|^[ \t]*$)' f2)

不過,到現在為止,我可能會將其放入腳本中並編寫類似於原始建議的內容,該建議更具可讀性。

如果您對vim有點熟悉,我強烈建議您使用vimdiff

vimdiff file1 file2

這將打開一個帶有兩個窗格的 vim 會話,每一側都有一個文件。突出顯示和顏色將指示文件之間的差異,並且所有相同的部分將被隱藏(折疊,但可展開)。

然後,如果要選擇性地將一個文件的差異合併到另一個文件,可以使用以下命令:

(考慮“目前文件”是游標所在的那個)

^W^W 將焦點從一個文件的視窗轉移到另一個文件的視窗

]c 前進到有差異的下一個區塊

[c 反向搜尋前一個有差異的塊

do ( diff o btain ) 將更改從另一個文件帶到目前文件

dp ( d iff p ut) 將更改從目前文件發送到另一個文件

注意:如果您在一個塊上或僅在一個塊下的一行上,dodp都可以工作。

撤消

zo 展開/取消隱藏文本

zc重新折疊/重新隱藏文本

zr將完全展開兩個文件(使用**:help fold**了解有關折疊的更多資訊)

:diffupdate將重新掃描文件以進行更改

當您開始移動更改的文本或引入更改時,文件中現在相同的部分也會自動折疊。

完成後,您可以退出並使用**:xa 寫入這兩個文件!**

您還可以一次寫入、退出、放棄更改等,就像您通常使用 vim 所做的那樣。

可以使用所有常用的vim命令隨意編輯文件;我只描述了您可能在 vimdiff 會話中使用的最常見和最有用的命令(與通用 vim 會話相反)。

引用自:https://serverfault.com/questions/14212