Linux 在bash中查找并为变量分配字符串

Linux 在bash中查找并为变量分配字符串,linux,bash,sed,grep,Linux,Bash,Sed,Grep,如何使用bash从文件中查找字符串 我得到了一个文件“version.txt”,该文件包含 version = "0.0.1-SNAPSHOT" 需要一个bash命令来动态提取版本密钥的值 awk-F'=''{print$2}'version.txt您可以使用以下命令之一并将结果分配给变量: version=$(grep ^version version.txt | cut -d'"' -f2) 输入: $ cat version.txt abc version = "0.0.1-SNAP

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

我得到了一个文件“version.txt”,该文件包含

version = "0.0.1-SNAPSHOT"

需要一个bash命令来动态提取版本密钥的值

awk-F'=''{print$2}'version.txt

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

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

$ cat version.txt 
abc
version = "0.0.1-SNAPSHOT"
123
$ grep -oP '(?<=^version\s=\s")[^"]*' version.txt                                                                                
0.0.1-SNAPSHOT
$ perl -ne 'if(/^version/){s/^version\s*=\s*|"//g; print}' version.txt                                                           
0.0.1-SNAPSHOT
grep:

$ cat version.txt 
abc
version = "0.0.1-SNAPSHOT"
123
$ grep -oP '(?<=^version\s=\s")[^"]*' version.txt                                                                                
0.0.1-SNAPSHOT
$ perl -ne 'if(/^version/){s/^version\s*=\s*|"//g; print}' version.txt                                                           
0.0.1-SNAPSHOT
还有许多其他方法可以达到您的结果(
sed
awk
,…)

解释:

$ cat version.txt 
abc
version = "0.0.1-SNAPSHOT"
123
$ grep -oP '(?<=^version\s=\s")[^"]*' version.txt                                                                                
0.0.1-SNAPSHOT
$ perl -ne 'if(/^version/){s/^version\s*=\s*|"//g; print}' version.txt                                                           
0.0.1-SNAPSHOT
1) 您在
perl
模式中使用
grep
,并使用lookbehind断言,在这种情况下,我假设您的等式总是被1包围,并且只有1个空格

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

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

/对新来者的建议:如果一个答案解决了你的问题,请点击大复选标记接受它(✓) 在它旁边,也可以选择向上投票(向上投票要求至少15个信誉点)。如果您发现其他答案有帮助,请向上投票。接受和向上投票有助于未来的读者。请参阅[相关帮助中心文章][1][1]: