如何从HTML文件中提取<RfcNumber>值并赋值给变量
提取标签内的数字并赋值给变量
你的sed命令逻辑错误,它是删除指定数字及后续内容,而非提取标签内的目标值。以下是几种可行的解决方案:
方法1:使用sed的捕获组
利用sed的正则捕获组匹配标签内容,仅提取目标数字:
rfc_number=$(sed -n 's/.*<d:RfcNumber>\([0-9]*\)<\/d:RfcNumber>.*/\1/p' test2.html) echo $rfc_number
解释:
-n:只输出匹配到的行s/.*<d:RfcNumber>\([0-9]*\)<\/d:RfcNumber>.*/\1/p:.*匹配标签前的所有内容\([0-9]*\)捕获标签内的数字(括号需转义)\1引用捕获到的第一组内容,p输出该行
方法2:使用grep的Perl兼容正则(PCRE)
如果你的grep支持-P参数(大部分Linux发行版默认支持),可以更简洁地提取:
rfc_number=$(grep -oP '<d:RfcNumber>\K[0-9]+' test2.html) echo $rfc_number
解释:
-o:只输出匹配到的部分-P:启用PCRE正则\K:忽略前面匹配的<d:RfcNumber>,只保留后面的数字部分
方法3:使用awk
通过指定分隔符提取目标字段:
rfc_number=$(awk -F'<d:RfcNumber>|</d:RfcNumber>' '{print $2}' test2.html) echo $rfc_number
解释:
-F'<d:RfcNumber>|</d:RfcNumber>':将标签作为分隔符print $2:输出分割后的第二个字段,即标签内的数字
执行任意一种方法后,rfc_number变量就会存储提取到的数字(示例中的1200000910)。
内容的提问来源于stack exchange,提问作者gaurav sharma
相关产品推荐
相关产品推荐

