您好想在匹配字符串的第一次出现后提取 N 行,然后使用 awk 打印 N 行。该字符串在我正在处理的文件中重复了多次。我试过使用这个命令:
'c&&c--;/XCHT/{c=10}'
这将打印所有匹配项 + 10 行。经过广泛搜索后,我已经看到了该命令的各种版本,但所有版本产生的结果大致与以下相同。我四处寻找。我想要一些关于如何修改此命令以实现结果的提示
我想达到的比赛结果如下
| XCHT | |
|-----------------|----|
| 柴胡chaihu | 24 |
| 黄芩huangqin | 9 |
| 法半夏banxia | 12 |
| 生姜shengjiang | 9 |
| 刺五加ciwujia | 9 |
| 大枣dazao | 6 |
| 炙甘草zhigancao | 9 |
| | |
| | |
文件的一部分如下所示:
## XCHT
| XCHT | |
|-----------------|----|
| 柴胡chaihu | 24 |
| 黄芩huangqin | 9 |
| 法半夏banxia | 12 |
| 生姜shengjiang | 9 |
| 刺五加ciwujia | 9 |
| 大枣dazao | 6 |
| 炙甘草zhigancao | 9 |
| | |
| | |
## XCHT+CM
| | |
|-----------------|----|
| 柴胡chaihu | 24 |
| 黄芩huangqin | 9 |
| 法半夏banxia | 12 |
| 干姜ganjiang | 9 |
| 五味子wuweizi | 9 |
| 炙甘草zhigancao | 9 |
| | |
| | |
## XCHT+TM
| XCHT+TM | |
|----------------- |----|
| 柴胡chaihu | 24 |
| 黄芩huangqin | 9 |
| 法天花粉tianhuafen | 12 |
| 生姜shengjiang | 9 |
| 刺五加ciwujia | 12 |
| 大枣dazao | 6 |
| 炙甘草zhigancao | 9 |
| | |
| | |
| XCHT-HQin+FL | |
|-----------------|----|
| 柴胡chaihu | 24 |
| 黄茯苓fuling | 12 |
| 法半夏banxia | 12 |
| 生姜shengjiang | 9 |
| 刺五加ciwujia | 9 |
| 大枣dazao | 6 |
| 炙甘草zhigancao | 9 |
| | |
| | |
## XCHT-DZ+ML
| XCHT-DZ+ML | |
|-----------------|-----|
| 柴胡chaihu | 12 |
| 黄芩huangqin | 4.5 |
| 法半夏banxia | 6 |
| 生姜shengjiang | 4.5 |
| 刺五加ciwujia | 4.5 |
| 牡蛎 muli | 6 |
| 炙甘草zhigancao | 4.5 |
| | |
| | |
'c&&c--;/XCHT/{c=10}'
对文件的命令结果
| XCHT | |
|-----------------|----|
| 柴胡chaihu | 24 |
| 黄芩huangqin | 9 |
| 法半夏banxia | 12 |
| 生姜shengjiang | 9 |
| 刺五加ciwujia | 9 |
| 大枣dazao | 6 |
| 炙甘草zhigancao | 9 |
| | |
| | |
| XCHT | |
|-----------------|----|
| 柴胡chaihu | 24 |
| 黄芩huangqin | 9 |
| 法半夏banxia | 12 |
| 干姜ganjiang | 9 |
| 五味子wuweizi | 9 |
| 炙甘草zhigancao | 9 |
| | |
| | |
| XCHT+TM | |
|----------------- |----|
| 柴胡chaihu | 24 |
| 黄芩huangqin | 9 |
| 法天花粉tianhuafen | 12 |
| 生姜shengjiang | 9 |
| 刺五加ciwujia | 12 |
| 大枣dazao | 6 |
| 炙甘草zhigancao | 9 |
| | |
| | |
| XCHT-DZ+ML | |
|-----------------|-----|
| 柴胡chaihu | 12 |
| 黄芩huangqin | 4.5 |
| 法半夏banxia | 6 |
| 生姜shengjiang | 4.5 |
| 刺五加ciwujia | 4.5 |
| 牡蛎 muli | 6 |
| 炙甘草zhigancao | 4.5 |
| | |
| | |
| Xiao Chaihi Tang -HQ+BS | |
|-------------------------|----|
| 柴胡chaihu | 24 |
| 白芍baishao | 9 |
| 法半夏banxia | 12 |
| 生姜shengjiang | 9 |
| 刺五加ciwujia | 9 |
| 大枣dazao | 6 |
| 炙甘草zhigancao | 9
由于将它们复制到网页,这些表格有点不稳定。任何建议的帮助将不胜感激。
处理此问题的一种方法是在
c
返回 0 时退出:或更简洁地说,
GNU
grep
可以做类似的事情:(但这也会显示匹配“XCHT”的第一行)。
您似乎正在尝试打印一个以空行分隔的记录,该记录恰好有 10 行长。无需计算行数和硬编码您认为记录中有多少行,使用 awk 您只需将其设置
RS
为空字符串即可简单地处理此类记录,无论它们的长度如何。如果那些以开头的行在
##
您的输入中并没有真正出现,那么您只需要:否则,如果这些行确实存在,那么我们可以使用 sub() 删除它们: