我在unix中有两个文件,我需要它们之间的区别。简单的差异就足够了。 但是我还需要编辑的部分的名称,这是该组的名称。
文件1:
GROUPNAME = {"hostnames","morehostnames","alotreally",
"almost200","hosts","separated"
,"ingroupsof3"};
文件2:
GROUPNAME = {"hostnames","morehostnames","alotreally",
"almost200","hosts","separated"
! ,"ingroupsof3","addedthis"};
Sofar我有这个:
diff -C 150 file1 file2 | awk '/= {/,/!/p' >> diff.txt
由于我不知道群组中有多少个主机,因此我无法使用确切的数字,只能使用模式。
diff
按要求向我显示了150行,两者之间的变化用"!"突出显示。
使用上面的命令,我得到了小组的开头:
GROUPNAME = {"hostnames","morehostnames","alotreally",
但它停在第一个换行符处。我想让整个小组包括标有“'!' (这将是改变本身)。
我试过sed,给了我大致相同的结果。 提前谢谢!
答案 0 :(得分:1)
你刚刚从每个输入文件中显示了一行,而不是向我们显示2个输入文件,这些文件有一些常见的和一些不同的行以及相关的预期输出,所以你没有给我们任何可以测试的东西,但是可能是这样的(当然未经测试)是您正在寻找的:
awk -v RS=';' 'NR==FNR{a[$0]; next} !($0 in a)' file1 file2
按记录顺序进行比较:
awk -v RS=';' 'NR==FNR{a[NR]=$0; next} $0 != a[FNR]' file1 file2