使用grep查找多于1个匹配的文件

时间:2015-03-16 17:34:49

标签: regex bash sed grep

我想知道是否可以使用grep列出超过1个匹配项的文件。这就是我正在做的事情。我试图通过客户的网站,用字符串替换最后一个匹配。所以在每一页的底部,他都有这一行:

<p align="center"><font face="Arial" color="#808080" size="2">

后面是一个页脚。我需要用这行替换它(使用sed):

<?php include 'footer.php'; ?>

但我想隔离只有第一行的1个实例的文件,所以我可以替换它们。我的问题的另一个解决方案是仅在最后一个匹配时使用sed,或者在文件的最后50行使用sed。对我有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您实际上可以使用grep -c来获取文件中的匹配数:

grep -c '<p align="center"><font face="Arial" color="#808080" size="2">' file

存储其输出

cnt=$(grep -c '<p align="center"><font face="Arial" color="#808080" size="2">' file)

答案 1 :(得分:1)

我会用这个:

for a in *; do one=\`grep exit $a | wc -l\`; if [ $one = 1 ]; then echo replace in $a; fi; done

代替echo,替换。