2019独角兽企业重金招聘Python工程师标准>>>
今天同事给出了一个小问题:
需求:文件A.txt, 文件B.txt,其中文件A的内容如下,每行是数据库的一个表的名字
DCMSADATA
DCMSADATARESULT
DCMSASPEC
DCMSASPECITEM
DCOQCDATA
IF_SAP_TIMEKEY_TEMP
,,,,,,,
文件B的内容为:
query&#61;MESPRD.DCMSADATA:" where TIMEKEY<&#39;20110101&#39;"
query&#61;MESPRD.DCOQCDATA:" where TIMEKEY<&#39;20110101&#39;"
query&#61;MESPRD.IF_SAP_ZPPT009_HISTORY:" where TIMEKEY<&#39;20110101&#39;"
query&#61;MESPRD.IF_SAP_ZPPT010:" where TIMEKEY<&#39;20110101&#39;"
query&#61;MESPRD.NCLOTLABELCHECK:" where TIMEKEY<&#39;20110101&#39;"
query&#61;MESPRD.NCLOTPROCESSTRACKINQUANTITY:" where TIMEKEY<&#39;20110101&#39;"
query&#61;MESPRD.NCMANUALEVI:" where TIMEKEY<&#39;20110101&#39;"
.......
想确认A中的每一个表是否在B中都有一行与之对应&#xff0c;也就是说B行中query&#61;XXXX是否将A文件的所有内容都包含。查出B文件中的query 是否有漏写&#xff0c;重复等内容。
思考了半天&#xff0c;写出了如下代码&#xff0c;完成了该要求&#xff0c;期待各位高手给出更好的实现&#xff1f;
for num in $(
awk -v num&#61;MESPRD.$num: &#39;BEGIN{sm&#61;0}{if($1~num) sm&#43;&#61;1}END{print sm,num}&#39; B.txt
done
运行script。会输出很多行数字&#xff0c;只要检查是否都是1即可&#xff0c;如果输出了一个0&#xff0c;表示B中漏写指定表&#xff0c;如果出现大于1的数字&#xff0c;表示B文件中有重复的记录~