我已经开始编写一个脚本来检查 Xen 主机...这个问题实际上是双重的。首先我有下面的代码片段;
TMPFILE001=/tmp/FILE001.rx TMPFILE002=/tmp/FILE002.rx TMPFILE003=/tmp/FILE003.rx xe vm-list params=uuid,is-控制域 | grep -B1 真 | grep uuid | 查询awk {'print $5'} > $TMPFILE001 xe vm-list params=uuid --minimal | tr ',' '\n' > $TMPFILE002
所以这给了我两个列表,我想删除 FILE002.rx 中出现的任何内容,使其不再出现在 FILE001.rx 中,并将其输出到 FILE003.rx。
理想情况下,我根本不会在其中使用任何文件,但我正在努力通过尝试在变量中捕获它们来使其工作。
因此,如果可能的话,最好运行脚本,比较两个命令的输出,并且仅在命令 2 的输出从命令 1 中取出后才显示剩余部分。
命令1的输出;
猫 /tmp/FILE001.rx 468190e5-c78b-4337-8094-20638353b470 5926bbf3-c48c-4c2a-8113-d7e58520cfe7 3f98ee14-5e60-4e9b-852a-f924ffe80791
命令 2 的输出(已修剪);
猫 /tmp/FILE002.rx |头-5 37ae6b9e-8a00-ab10-7e17-3d70ab275b9b d8208537-0d69-1332-9301-4699d194430f 1cf06668-5450-4d44-a7ba-c2c7b6bcd6b2 7d11c6e3-48ef-0e5e-c6ed-e8f2548533fd 7d3d0ba3-a6d6-d2a7-99f0-06fa74e625fa
答案1
看一下comm
命令。取以下两个文件
f1.txt
item1
item2
item3
item4
item5
item6
f2.txt
item1
item2
item22
item3
item4
输出
$ comm -23 f1.txt f2.txt
item5
item6
答案2
要回答问题的一部分,您可以使用带 -F 标志的 grep 来比较两个文件之间的差异。然后我将其与 -v 结合起来,以消除我所需要的差异;
grep -vxFf $TMPFILE001 $TMPFILE002 > $TMPFILE003
答案3
或者,如果您愿意,可以这样做:
diff file1 file2 | grep "<" | sed 's/^<\ //g' > file3