如何与sed进行第一场比赛?

时间:2017-07-22 20:44:30

标签: linux shell unix sed

我厌倦了这个sed:D所以我有一个小文件:

f <- function(n){
  tmp <- digest::digest(n)
  stats::rnorm(n)
}

find_ns_functions(f)
# [1] "digest::digest" "stats::rnorm" 

这是我的sed命令:

version = "1.1"
group= "com.centurion.eye"
archivesBaseName = "eye"

impmet {
    version = "4.1614"
    runDir = "eclipse"
}

我需要获得1.1版本。因此,当我执行此命令时,输出为:

sed -n -e '/version/ s/.* = *//p' "build.gradle"

但希望的是:

"1.3"
"4.1614"

我怎样才能实现这一目标?谢谢!

3 个答案:

答案 0 :(得分:3)

匹配第一个后退出。

sed -n -e '/version/ {s/.* = *//p;q}' build.gradle

答案 1 :(得分:0)

将命令输出传递给head -1以仅获取第一个条目。

sed -n -e '/version/ s/.* = *//p' "build.gradle" | head -1

示例运行

[ /c]$ cat build.gradle
version = "1.1"
group= "com.centurion.eye"
archivesBaseName = "eye"

impmet {
    version = "4.1614"
        runDir = "eclipse"
        }
[ /c]$ sed -n -e '/version/ s/.* = *//p' build.gradle | head -1
"1.1"

答案 2 :(得分:0)

使用GNU sed,您还可以在地址范围内使用0仅在第一场比赛中应用替换:

sed -n -e '0,/version/s/.* = *//p' build.gradle