我们有两个文件,其中我想要差异并打印该行,第四行在该差异线之上。 例如,在这种情况下,diff在具有debug的行之间:ON / OFF,我想打印具有值“AR1LogHandler.properties”的行。
文件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>
文件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 :(得分:0)
您可以使用diff
,tail
和sed
的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**"
不漂亮,但保留显示属性的第1行,然后保留文件中的更改内容。