2017-08-03 45 views
0

我們有兩個文件,我想要在該差異線上方區分和打印該行和第四行。 例如,在這種情況下,diff是在具有debug:ON/OFF的行之間,並且我想要打印值爲「AR1LogHandler.properties」的行。在unix中比較兩個文件並在它上面打印第n行的輸出

FILE 1 ----

<configuration-file name="**AR1LogHandler.properties**">                      
<parameters>                          
<parameter name-path="system.severity" 
value="fatal:yes;error:yes;information:yes;**warning:yes;debug:yes**" 
sticky="true" exists="true"/>                         
</parameters>                     
</configuration-file> 

FILE 2 ---

<configuration-file name="**AR1LogHandler.properties**">                      
<parameters>                           
<parameter name-path="system.severity" 
value="fatal:yes;error:yes;information:yes;**warning:no;debug:no**" 
sticky="true" exists="true"/>                         
</parameters>                       
</configuration-file> 
+0

像'diff -uNb -B4 file1 file2'? (或者'-B3',如果你正在尋找'...致命...'行) –

+0

請解釋你想要的。我認爲當在參數名稱路徑中找到差異時,您需要上面的第三行。當''塊中有更多的塊時,你想要什麼? 你是否希望上面的行有'configuration-file'以上的區別? –

回答

0

可以使用的difftailsed一個hackish的組合來接只有第一線和所述改變線,例如

$ diff -uNb -B3 df1 df2 | tail -n +4 > tmp && \ 
    sed '0,/^[ ]/!d' tmp && \ 
    sed '/^[^-+]/d' tmp && rm tmp 
<configuration-file name="**AR1LogHandler.properties**"> 
-value="fatal:yes;error:yes;information:yes;**warning:yes;debug:yes**" 
+value="fatal:yes;error:yes;information:yes;**warning:no;debug:no**" 

不漂亮,但保留了顯示性能的一號線,然後什麼文件中已經改變。

+0

感謝您的回覆。對不起,我以前沒有通知我需要在AIX機器上做。而Nb選項在AIX中不起作用。 –

相關問題