这是我的档案:
$ cat file
some pile of text
or other
<!-- Footer part at bottom of page-->
<div id="footer">
<div class="row col-md-2 col-md-offset-5">
<p class="text-muted">© 2014. Core Team</p>
</div>
<div id="downloadlinks">
<!-- downloadlinks go here-->
</div>
</div>
and more maybe.
这是我想要匹配的模式:
$ cat old
<!-- Footer part at bottom of page-->
<div id="footer">
<div class="row col-md-2 col-md-offset-5">
<p class="text-muted">© 2014. Core Team</p>
</div>
<div id="downloadlinks">
<!-- downloadlinks go here-->
</div>
</div>
我想看看文件中的模式在其他文件中发生了多少次(* .html)。我希望使用awk和/或python来做到这一点。
所以例如在这里给出这个1文件的答案就是:1(我可能必须在每次迭代时使用for循环和awk)
awk ... file
1
答案 0 :(得分:2)
with open('file.txt', 'r') as myfile:
data=myfile.read().replace('\n', '')
with open('old.txt', 'r') as myfile:
search=myfile.read().replace('\n', '')
print data.count(search)
答案 1 :(得分:1)
使用GNU awk进行多字符RS:
awk -v RS='^$' 'NR==FNR{RS=$0} END{print (FNR && (RT=="") ? FNR-1 : FNR)}' old file
上面一次完全按原样读取old
的全部内容,并使用该字符串填充RS
,然后再转到阅读file
。 FNR
块中的END
表示RS
中存在的file
个已终止字符串的数量。如果file
的结尾没有以RS
结尾,那么在RS
的最后一次出现后,文件中将会有一个字符串,而RT
将是空字符串。在这种情况下,如果FNR
非零,则减去1以获得所见的RS
的数量。您需要检查非零FNR
以避免为空文件打印-1
。
所以在文件末尾如果FNR!= 0那么文件不是空的那么你需要检查文件是否以RS结尾(在这种情况下RT将是非空的)或不是(其中case RT将为null)。如果确实如此,那么看到的RS的数量是FNR,否则它是FNR-1。如果FNR == 0则文件为空,因此您要打印一个零的计数。