我非常喜欢linux,即使我需要简单的东西,我也不知道从哪里开始。在bash脚本中,我需要解析字符串“VOL。”和“,”之间的HTML页面中的值,并将其传递给变量。
答案 0 :(得分: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次出现但非贪心?
字符(?=,)
=这是一个正向前瞻断言来查找,
字符答案 1 :(得分:1)
这可以使用bash的内置正则表达式匹配来完成:
if [[ "$var" =~ "VOL. "([^,]*)"," ]]; then
match="${BASH_REMATCH[1]}"
fi