我对 linux 很陌生,即使我需要一些简单的东西,我也不知道从哪里开始。在 bash 脚本中,我需要解析 HTML 页面中字符串“VOL.”和“”之间的值,并将其传递给变量。
问问题
904 次
2 回答
4
newvar=$(grep -oP 'VOL\.\K.*?(?=,)' file.txt)
echo "$newvar"
或从字符串:
newvar=$(grep -oP 'VOL\.\K.*?(?=,)' <<< "$string")
echo "$newvar"
如果您需要更便携的东西:
newvar=$(perl -lne '/VOL\.\K.*?(?=,)/ && print $&' <<< "$string")
echo "$newvar"
正则表达式的解释
VOL\.
= 文字VOL.
:.
= 中的任何字符,regex
不带反斜杠\K
= 重新开始匹配到零,见https://stackoverflow.com/a/13543042/465183.*?
?
= 任何字符,0 到 N 次出现,但对char 不贪心(?=,)
=查找char是一个积极的前瞻性断言,
于 2013-04-20T15:01:53.757 回答
1
这可以使用 bash 的内置正则表达式匹配来完成:
if [[ "$var" =~ "VOL. "([^,]*)"," ]]; then
match="${BASH_REMATCH[1]}"
fi
于 2013-04-20T17:00:04.453 回答