大型html文件中的某处:
<td headers="fee" style="cursor:pointer;" onclick="toggle('detailinfo088180');">
$675.00
</td>
blabla<br><em>$650</em>">blabla/a>
</td>
</tr>
我需要在grep命令后只有'675.00'数字。我尝试了一些像$ [0..9]这样的正则表达式。*但它不起作用。
谢谢,
答案 0 :(得分:1)
试试这个
grep -e "\$[0-9]\{1,\}\.[0-9]\{2\}"
我把“$”更好地匹配模式,你可以在grep匹配后删除它,管道另一个操作。
如果你只需要提取数字,那么你可以决定不使用grep而是使用perl:
perl -ne '/\$([0-9]+\.([0-9]+))/ && print "$1\n"' < yourfile
答案 1 :(得分:1)
您想使用连字符-
而不是..
来表示范围。您还需要转义$
字面值,因为否则意味着行尾。
这应该看到它:grep "\$[0-9]+"
答案 2 :(得分:0)
这可以从'':
的内部HTML中提取数字/ [0-9。] + /
问题的另一部分是获取带有价格的HTML。这是一个更完整的例子:
<html>
<head>
<script>
function toggle(e,id) {
val = parseFloat(e.innerHTML.match(/[0-9.]+/));
// Another method:
// val = parseFloat(e.innerHTML.match(/\$([0-9.]+)/)[1]);
alert(val);
}
</script>
</head>
<body>
<table border=1><tr>
<td headers="fee" style="cursor:pointer;" onclick="toggle(this,'detailinfo088180');">
$675.04
</td>
blabla<br><em>$650</em>">blabla/a>
</td>
</tr>
</table>
</body>
</html>
请注意以下事项:
toggle()
函数需要一个额外的参数,即实际点击的元素。 (假设您希望从点击的元素中提取价格)(..)
”)来匹配字符串并提取字符串的一部分而不是整个字符串。如果您想了解有关正则表达式如何工作的更多信息,请尝试here。或谷歌。