如何使用sed从文本文件中获取变量?

时间:2017-07-22 19:43:11

标签: linux sed

所以我编写了这段代码:

sed -n -e '0,/version/{s/.*: *//p}' "$path"

$ path是此文件的实际路径:

name: CSaveBackupWorld
main: ru.centurion.savebackupworld.SBW
version: 3.6
author: ASTRO
load: STARTUP

我只想获得版本值,我的意思是3.6,但不是我得到这个输出:

CSaveBackupWorld
ru.centurion.savebackupworld.SBW
3.6

这真的很奇怪,当然我只为版本制作了一个过滤器,但它也显示了名称和主要内容。我做错了什么?

第一个问题彻底解决了!这是最后一个: 我还有一个文件:

apply plugin: 'jee'

version = "1.3"
group= "com.centurion.eye" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = "eye"

我怎样才能获得这个版本?只有1.3。

3 个答案:

答案 0 :(得分:1)

您不必要地将0,添加到您的命令中:

sed -n -e '/version/{s/.*: *//p}' "$path"

应该工作得很好。 0,使sed打印从文件开头到匹配行的所有内容。

或者,awk可能更具可读性:

awk '/version/{print $2}' "$path"

答案 1 :(得分:1)

只是

 sed -n -e '/version/ s/.*: *//p' "$path"

会这样做

答案 2 :(得分:1)

您可以一次解决您的问题。

sed -n 's/^version.*\([0-9]\.[0-9]\).*/\1/p' "$path"