查找并为bash中的变量指定一个字符串

时间:2018-05-28 22:21:40

标签: linux bash sed grep

如何使用bash从文件中查找字符串。

我有一个文件" version.txt"并且文件具有内容

version = "0.0.1-SNAPSHOT"

需要bash命令动态提取版本密钥的值。

4 个答案:

答案 0 :(得分:0)

version=$(grep ^version version.txt | cut -d'"' -f2)

答案 1 :(得分:0)

您可以使用以下命令之一并将结果分配给变量:

<强> INPUT:

$ cat version.txt 
abc
version = "0.0.1-SNAPSHOT"
123

<强>的grep:

$ grep -oP '(?<=^version\s=\s")[^"]*' version.txt                                                                                
0.0.1-SNAPSHOT

<强> perl的:

$ perl -ne 'if(/^version/){s/^version\s*=\s*|"//g; print}' version.txt                                                           
0.0.1-SNAPSHOT

还有很多其他方法可以达到您的结果(sedawk,...)

<强>说明:

1)你在grep模式下使用perl并使用lookbehind断言,在这种情况下,我认为你的等号总是被1包围,只有1个空格

2)perl方法更灵活(0,1或更多空格可以位于相同的字符周围),这里的原则是你确定以version开头的行,然后你在打印结果之前删除version =和双引号。

答案 2 :(得分:0)

var=$(awk '/version/ {print $3}' file.txt)

/ EXPR /&lt; - 您可以使用带有awk的正则表达式。 因为我们对第三列感兴趣,因此您还可以使用此代码:

var=$(awk '/version/ {print $(NF)}' file.txt)

awk中的NF是当前行的字段数,在本例中为3。

答案 3 :(得分:-1)

awk -F&#39; =&#39; &#39; {print $ 2}&#39; version.txt