我正在比较两个文件的结果,其中一个文件中的行不在另一个文件中,使用grep -v -f file1.txt file2.txt > result.txt
假设我的文件看起来像;
文件1.txt
alex
peter
zoey
文件2.txt
alex
john
peter
zoey
So result.txt
应包含john
这将在 Jenkins 作业中运行,而詹金斯最终对创建一个空的作业不满意result.txt
如果两者之间没有差异。
我不能只进行盲差异/无差异输出,我特别需要知道哪些行不同(如果有)。
有没有一种更简洁的方法来运行此命令,以便在没有结果的情况下不创建文件?
编辑:尝试使用安静选项 -q 有条件地运行命令(当找到一个匹配项时将退出并节省时间)。然后,一旦找到第一个匹配项(意味着文件不同),您将运行相同的命令并将其输出到文件中。
试试这个:(编辑取自查尔斯·达菲的评论)
#!/usr/bin/env bash
if grep -qvf file1.txt file2.txt
then
grep -vf file1.txt file2.txt > output.txt
echo "Differences exist. File output.txt created."
else
echo "No difference between the files detected"
fi
或者用更少的代码和一行:
grep -qvf file1.txt file2.txt && grep -vf file1.txt file2.txt > output.txt
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)