我正在尝试更新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
}
答案 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 不会将$0
和7
作为数值进行比较,而是将其作为字符串值 - 我不知道为什么。我不熟悉 cygwin 。
此解决方案打印以下输出:
8
9
10
11
23
如果test.html
文件包含类似
<td class="no">(71)</td>
原始代码($0 > 7
)也会打印
71
在cygwin。