Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash Grep多次不处理一个文件_Bash_Grep - Fatal编程技术网

Bash Grep多次不处理一个文件

Bash Grep多次不处理一个文件,bash,grep,Bash,Grep,我需要搜索打开和关闭html标记,并打印找到的标记数。但似乎是第二次使用一个文件不起作用。第二个块每次显示0个标记。如果我先将第二个块移到上面,它会显示正确数量的标记,但现在位于第二位的块会显示0个标记 ./s.sh <my.html TAG=$(grep -oP "<([^>\/]+)>" $1 | wc -l) echo "<TAG> -" $TAG CTAG=$(grep -oP "</([^>\/]+)>" $1 | wc -l

我需要搜索打开和关闭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

/s.sh无需在模式中转义斜杠,您可以省略捕获组和
-p
选项:

$ TAG=$(grep -o "<[^>/]*>" "$1" | wc -l)
$ echo "<TAG>: " $TAG
<TAG>: 13

$ CTAG=$(grep -o "</[^/>]*>" "$1" | wc -l)
$ echo "</TAG>: " $CTAG
</TAG>: 11
$TAG=$(grep-o”/]*>“$1”| wc-l)
$echo“:“$TAG”
: 13
$CTAG=$(grep-o“]*>“$1”| wc-l)
$echo“:“$CTAG
: 11

请提供示例输入和预期输出。您似乎试图用grep解析html或xml,这不是正确的工具,谢谢您的编辑,但仍然缺少示例输入看起来您只需要引用
$1
,使用
“$1”
\/]+)>“
为什么
\/
也包含在
[…]
中,当它也开始表达式

<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>
$ TAG=$(grep -o "<[^>/]*>" "$1" | wc -l)
$ echo "<TAG>: " $TAG
<TAG>: 13

$ CTAG=$(grep -o "</[^/>]*>" "$1" | wc -l)
$ echo "</TAG>: " $CTAG
</TAG>: 11