Linux
如何區分兩個配置文件?
我有兩個 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) 將更改從目前文件發送到另一個文件
注意:如果您在一個塊上或僅在一個塊下的一行上,do和dp都可以工作。
你 對你撤消
zo 展開/取消隱藏文本
zc重新折疊/重新隱藏文本
zr將完全展開兩個文件(使用**:help fold**了解有關折疊的更多資訊)
:diffupdate將重新掃描文件以進行更改
當您開始移動更改的文本或引入更改時,文件中現在相同的部分也會自動折疊。
完成後,您可以退出並使用**:xa 寫入這兩個文件!**
您還可以一次寫入、退出、放棄更改等,就像您通常使用 vim 所做的那樣。
可以使用所有常用的vim命令隨意編輯文件;我只描述了您可能在 vimdiff 會話中使用的最常見和最有用的命令(與通用 vim 會話相反)。