Bash中提取字符串指定字段值失败,寻求解决方法
解决Bash提取字符串特定属性值的问题
你的awk命令出错是因为匹配模式写法错误,awk的匹配规则需要用斜杠/包裹目标字符串,而不是双引号。
正确的awk写法
subStr=$(echo "$data" | awk '/prop2:/ {print $2}')
这个命令会匹配包含prop2:的行,awk默认以空白字符(不管空格数量)分割字段,所以$2就是对应的值v2。
用grep提取的方法
如果想用grep实现,可借助Perl兼容正则:
subStr=$(echo "$data" | grep -oP 'prop2:\s+\K\S+')
-o:只输出匹配的内容片段-P:启用Perl正则语法\s+:匹配prop2:后面的任意数量空白字符\K:忽略前面的匹配部分(即不输出prop2:和空格)\S+:匹配后续的非空白字符(也就是目标值v2)
执行完任意一种命令后,echo $subStr都会输出v2。
内容的提问来源于stack exchange,提问作者Martin de Jong
相关产品推荐
相关产品推荐

