我需要搜索打开和关闭html标记并打印找到的数量。但似乎是第二次使用,一个文件不起作用。第二个块每隔0个标签向我显示一次。如果我将第二个块移至第一个块上方,则它会显示正确数量的标签,但现在位于第二位的块确实显示0个标签。
./s.sh <my.html
TAG=$(grep -oP "<([^>\/]+)>" $1 | wc -l)
echo "<TAG> -" $TAG
CTAG=$(grep -oP "</([^>\/]+)>" $1 | wc -l)
echo "</TAG> -" $CTAG
我得到此输出:
<TAG> - 13
</TAG> - 0
但是应该得到这样的东西:
<TAG> - 13
</TAG> - 11
输入示例:
<HTML>
<P>Список сотрудников
<TABLE BORDER=0>
<TR><TH>ФИО</TH><TH>Дата</TH></TR>
<TR><TD>Иванов И.И.</TD><TD>10.12.2019</TD></TR>
<TR><TD>Сидоров А.В.</TD><TD>11.11.1977</TD></TR>
</TABLE>
<P>Всего: 2 чел.
</HTML>
无需在模式中转义斜线,您可以省略捕获组和-P
选项:
$ TAG=$(grep -o "<[^>/]*>" "$1" | wc -l)
$ echo "<TAG>: " $TAG
<TAG>: 13
$ CTAG=$(grep -o "</[^/>]*>" "$1" | wc -l)
$ echo "</TAG>: " $CTAG
</TAG>: 11