我有一个脚本可以测试我正在设计的一些API。此脚本获取程序的输出,并将其与预期输出(主文件)进行比较。如果匹配,则不返回任何错误。我希望能够屏蔽日期,内存地址等内容。
以下是一个例子:
==== MASTER file ====
TEST STARTED ON .*
ADDING ELEMENT 5 to HASHTABLE. Location 0x.*
LOOKING UP ELEMENT 5. SUCCESFUL.
REMOVING ELEMENT
==== END ====
一个与之匹配的文件:
==== OUTPUT file ====
TEST STARTED ON NOV/23 12:18
ADDING ELEMENT 5 to HASHTABLE. Location 0x51F56E2
ROOKING UP ELEMENT 5. SUCCESFUL.
REMOVING ELEMENT
==== END ====
有没有办法让diff
使用这些通配符?或者还有其他程序可以做到吗?
非常感谢。
答案 0 :(得分:1)
你不能用简单的差异做到这一点。你可以这样做:
set -f
while IFS=, read pattern match ; do
grep "$pattern" >/dev/null <<<"$match" || { echo ERROR ; exit 1 ; }
done < <(paste -d, master output)
假设master
是主文件,output
是输出文件。
要记住几件重要的事情:
^
开头。set -f
是禁用shell扩展所必需的,否则可能会产生意想不到的后果。$IFS
设置为既不在主文件中也不在输出文件中使用的字符。相应地设置paste
&#39; -d
参数。