使用awk查找和更新html文件中的编号

时间:2016-11-10 14:12:05

标签: awk gawk

我正在尝试更新test.html文件中的编号/编号:

<td class="no">(8)</td>
<td class="no">(9)</td>
<td class="no">(10)</td>
<td class="no">(11)</td>
<td class="no">(23)</td>

可以在其他行之间添加新行,因此我不想总是手动更新数字。另一个条件是更新应该在7号之后开始。

我尝试通过匹配替换线来使用gensub但是我的想法不起作用。必须有一种更简单的方法来确定数字!没有任何教程或论坛帖子对我有所帮助,或者我不理解它们......

到目前为止我所拥有的:

/^<td class="no">\([0-9]+\)<\/td>$/ {
  a = gensub(/(.*)([0-9]+)(.*)/, "\\2", "g") # this finds only 1 digit, why?
  if (a > 7) print a
}

1 个答案:

答案 0 :(得分:1)

如果您只需要determine the numbers,那么您必须摆脱任何不是数字的字符

/^<td class="no">\([0-9]+\)<\/td>$/ {
  gsub("[^0-9]","")
  if ((0+$0) > 7) print
}

更新 (0+$0) > 7 取代原来的 $0 > 7 ,因为 cygwing gawk 不会将$07作为数值进行比较,而是将其作为字符串值 - 我不知道为什么。我不熟悉 cygwin

此解决方案打印以下输出:

8
9
10
11
23

如果test.html文件包含类似

的行
<td class="no">(71)</td>

原始代码($0 > 7)也会打印

71

在cygwin。