仅匹配字符串的第一次出现,然后添加 N 行 awk

ajr*_*chm 2 awk regular-expression

您好,希望在匹配第一次出现的字符串后提取 N 行,使用 awk 打印后面的 N 行。该字符串在我正在处理的文件中重复多次。我尝试过使用这个命令:

\n

'c&&c--;/XCHT/{c=10}'

\n

这将打印匹配的所有事件 + 10 行。经过大量搜索后,我看到了该命令的各种版本,但所有版本都产生与下面大致相同的结果。我环顾四周才发现。我想要一些关于如何修改此命令以实现结果的提示

\n

我希望达到的比赛结果如下

\n
| XCHT            |    |\n|-----------------|----|\n| \xe6\x9f\xb4\xe8\x83\xa1chaihu      | 24 |\n| \xe9\xbb\x84\xe8\x8a\xa9huangqin    | 9  |\n| \xe6\xb3\x95\xe5\x8d\x8a\xe5\xa4\x8fbanxia    | 12 |\n| \xe7\x94\x9f\xe5\xa7\x9cshengjiang  | 9  |\n| \xe5\x88\xba\xe4\xba\x94\xe5\x8a\xa0ciwujia   | 9  |\n| \xe5\xa4\xa7\xe6\x9e\xa3dazao       | 6  |\n| \xe7\x82\x99\xe7\x94\x98\xe8\x8d\x89zhigancao | 9  |\n|                 |    |\n|                 |    |\n\n
Run Code Online (Sandbox Code Playgroud)\n

该文件的一部分如下所示:

\n
## XCHT\n| XCHT            |    |\n|-----------------|----|\n| \xe6\x9f\xb4\xe8\x83\xa1chaihu      | 24 |\n| \xe9\xbb\x84\xe8\x8a\xa9huangqin    | 9  |\n| \xe6\xb3\x95\xe5\x8d\x8a\xe5\xa4\x8fbanxia    | 12 |\n| \xe7\x94\x9f\xe5\xa7\x9cshengjiang  | 9  |\n| \xe5\x88\xba\xe4\xba\x94\xe5\x8a\xa0ciwujia   | 9  |\n| \xe5\xa4\xa7\xe6\x9e\xa3dazao       | 6  |\n| \xe7\x82\x99\xe7\x94\x98\xe8\x8d\x89zhigancao | 9  |\n|                 |    |\n|                 |    |\n\n\n## XCHT+CM\n\n|                 |    |\n|-----------------|----|\n| \xe6\x9f\xb4\xe8\x83\xa1chaihu      | 24 |\n| \xe9\xbb\x84\xe8\x8a\xa9huangqin    | 9  |\n| \xe6\xb3\x95\xe5\x8d\x8a\xe5\xa4\x8fbanxia    | 12 |\n| \xe5\xb9\xb2\xe5\xa7\x9cganjiang    | 9  |\n| \xe4\xba\x94\xe5\x91\xb3\xe5\xad\x90wuweizi   | 9  |\n| \xe7\x82\x99\xe7\x94\x98\xe8\x8d\x89zhigancao | 9  |\n|                 |    |\n|                 |    |\n\n## XCHT+TM\n\n\n| XCHT+TM                 |    |\n|-----------------        |----|\n| \xe6\x9f\xb4\xe8\x83\xa1chaihu              | 24 |\n| \xe9\xbb\x84\xe8\x8a\xa9huangqin            | 9  |\n| \xe6\xb3\x95\xe5\xa4\xa9\xe8\x8a\xb1\xe7\xb2\x89tianhuafen      | 12 |\n| \xe7\x94\x9f\xe5\xa7\x9cshengjiang          | 9  |\n| \xe5\x88\xba\xe4\xba\x94\xe5\x8a\xa0ciwujia           | 12 |\n| \xe5\xa4\xa7\xe6\x9e\xa3dazao               | 6  |\n| \xe7\x82\x99\xe7\x94\x98\xe8\x8d\x89zhigancao         | 9  |\n|                         |    |\n|                         |    |\n \n\n| XCHT-HQin+FL    |    |\n|-----------------|----|\n| \xe6\x9f\xb4\xe8\x83\xa1chaihu      | 24 |\n| \xe9\xbb\x84\xe8\x8c\xaf\xe8\x8b\x93fuling    | 12 |\n| \xe6\xb3\x95\xe5\x8d\x8a\xe5\xa4\x8fbanxia    | 12 |\n| \xe7\x94\x9f\xe5\xa7\x9cshengjiang  | 9  |\n| \xe5\x88\xba\xe4\xba\x94\xe5\x8a\xa0ciwujia   | 9  |\n| \xe5\xa4\xa7\xe6\x9e\xa3dazao       | 6  |\n| \xe7\x82\x99\xe7\x94\x98\xe8\x8d\x89zhigancao | 9  |\n|                 |    |\n|                 |    |\n## XCHT-DZ+ML\n\n| XCHT-DZ+ML      |     |\n|-----------------|-----|\n| \xe6\x9f\xb4\xe8\x83\xa1chaihu      | 12  |\n| \xe9\xbb\x84\xe8\x8a\xa9huangqin    | 4.5 |\n| \xe6\xb3\x95\xe5\x8d\x8a\xe5\xa4\x8fbanxia    | 6   |\n| \xe7\x94\x9f\xe5\xa7\x9cshengjiang  | 4.5 |\n| \xe5\x88\xba\xe4\xba\x94\xe5\x8a\xa0ciwujia   | 4.5 |\n| \xe7\x89\xa1\xe8\x9b\x8e muli       | 6   |\n| \xe7\x82\x99\xe7\x94\x98\xe8\x8d\x89zhigancao | 4.5 |\n|                 |     |\n|                 |     |\n\n
Run Code Online (Sandbox Code Playgroud)\n

'c&&c--;/XCHT/{c=10}'文件上命令的结果

\n
| XCHT            |    |\n|-----------------|----|\n| \xe6\x9f\xb4\xe8\x83\xa1chaihu      | 24 |\n| \xe9\xbb\x84\xe8\x8a\xa9huangqin    | 9  |\n| \xe6\xb3\x95\xe5\x8d\x8a\xe5\xa4\x8fbanxia    | 12 |\n| \xe7\x94\x9f\xe5\xa7\x9cshengjiang  | 9  |\n| \xe5\x88\xba\xe4\xba\x94\xe5\x8a\xa0ciwujia   | 9  |\n| \xe5\xa4\xa7\xe6\x9e\xa3dazao       | 6  |\n| \xe7\x82\x99\xe7\x94\x98\xe8\x8d\x89zhigancao | 9  |\n|                 |    |\n|                 |    |\n\n| XCHT            |    |\n|-----------------|----|\n| \xe6\x9f\xb4\xe8\x83\xa1chaihu      | 24 |\n| \xe9\xbb\x84\xe8\x8a\xa9huangqin    | 9  |\n| \xe6\xb3\x95\xe5\x8d\x8a\xe5\xa4\x8fbanxia    | 12 |\n| \xe5\xb9\xb2\xe5\xa7\x9cganjiang    | 9  |\n| \xe4\xba\x94\xe5\x91\xb3\xe5\xad\x90wuweizi   | 9  |\n| \xe7\x82\x99\xe7\x94\x98\xe8\x8d\x89zhigancao | 9  |\n|                 |    |\n|                 |    |\n\n\n\n| XCHT+TM                 |    |\n|-----------------        |----|\n| \xe6\x9f\xb4\xe8\x83\xa1chaihu              | 24 |\n| \xe9\xbb\x84\xe8\x8a\xa9huangqin            | 9  |\n| \xe6\xb3\x95\xe5\xa4\xa9\xe8\x8a\xb1\xe7\xb2\x89tianhuafen      | 12 |\n| \xe7\x94\x9f\xe5\xa7\x9cshengjiang          | 9  |\n| \xe5\x88\xba\xe4\xba\x94\xe5\x8a\xa0ciwujia           | 12 |\n| \xe5\xa4\xa7\xe6\x9e\xa3dazao               | 6  |\n| \xe7\x82\x99\xe7\x94\x98\xe8\x8d\x89zhigancao         | 9  |\n|                         |    |\n|                         |    |\n\n| XCHT-DZ+ML      |     |\n|-----------------|-----|\n| \xe6\x9f\xb4\xe8\x83\xa1chaihu      | 12  |\n| \xe9\xbb\x84\xe8\x8a\xa9huangqin    | 4.5 |\n| \xe6\xb3\x95\xe5\x8d\x8a\xe5\xa4\x8fbanxia    | 6   |\n| \xe7\x94\x9f\xe5\xa7\x9cshengjiang  | 4.5 |\n| \xe5\x88\xba\xe4\xba\x94\xe5\x8a\xa0ciwujia   | 4.5 |\n| \xe7\x89\xa1\xe8\x9b\x8e muli       | 6   |\n| \xe7\x82\x99\xe7\x94\x98\xe8\x8d\x89zhigancao | 4.5 |\n|                 |     |\n|                 |     |\n\n| Xiao Chaihi Tang -HQ+BS |    |\n|-------------------------|----|\n| \xe6\x9f\xb4\xe8\x83\xa1chaihu              | 24 |\n| \xe7\x99\xbd\xe8\x8a\x8dbaishao             | 9  |\n| \xe6\xb3\x95\xe5\x8d\x8a\xe5\xa4\x8fbanxia            | 12 |\n| \xe7\x94\x9f\xe5\xa7\x9cshengjiang          | 9  |\n| \xe5\x88\xba\xe4\xba\x94\xe5\x8a\xa0ciwujia           | 9  |\n| \xe5\xa4\xa7\xe6\x9e\xa3dazao               | 6  |\n| \xe7\x82\x99\xe7\x94\x98\xe8\x8d\x89zhigancao         | 9\n
Run Code Online (Sandbox Code Playgroud)\n

由于将它们复制到网页,这些表格有点不稳定。任何建议的帮助将不胜感激。

\n

Ste*_*itt 6

处理这个问题的一种方法是当c返回到 0 时退出:

\n
c { print; if (--c == 0) exit }; /XCHT/{c=10}\n
Run Code Online (Sandbox Code Playgroud)\n

或者更简洁地说,

\n
c; c && !--c { exit }; /XCHT/{c=10}\n
Run Code Online (Sandbox Code Playgroud)\n

GNUgrep可以做类似的事情:

\n
grep -m1 -A10 XCHT\n
Run Code Online (Sandbox Code Playgroud)\n

(但这也会显示匹配 \xe2\x80\x9cXCHT\xe2\x80\x9d 的第一行)。

\n