如何使用bash从文件中查找字符串。
我有一个文件" version.txt"并且文件具有内容
version = "0.0.1-SNAPSHOT"
需要bash命令动态提取版本密钥的值。
答案 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
还有很多其他方法可以达到您的结果(sed
,awk
,...)
<强>说明:强>
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