在Bash中如何从文件提取特定文本?以提取version.txt版本号为例
Bash 提取 version.txt 版本号的实现方案
以下是3种常用且稳定的实现方式,均适配你给出的Version = "0.11.0"格式场景:
- 方案1:使用grep实现(适合熟悉正则的场景)
命令:grep -oP 'Version = "\K[^"]+' version.txt
原理:通过Perl正则语法匹配Version = "前缀后丢弃该部分内容,直接提取后续直到下一个双引号之间的字符,即为版本号。 - 方案2:使用sed实现(适合流处理场景)
命令:sed -n 's/^Version = "\([^"]*\)".*/\1/p' version.txt
原理:关闭默认输出后,用正则捕获双引号包裹的版本号内容,替换整行内容为捕获到的版本号并输出。 - 方案3:使用awk实现(逻辑最简单易读)
命令:awk -F'"' '/Version = /{print $2}' version.txt
原理:设置双引号为字段分隔符,匹配到包含Version =的行后,直接输出第二个字段,刚好是双引号包裹的版本号内容。
如果你的version.txt中存在多行匹配Version的内容,可以在命令末尾加| head -n1只取第一个匹配的版本号。
内容的提问来源于stack exchange,提问作者Yudi Yuswita Sunarto
相关产品推荐
相关产品推荐

