BASH shell使用正则表达式从文件中获取值到参数中

Jay*_*ord 2 regex bash shell

我有一个文件,我需要从正则表达式获取一段文本.我们将调用该文件x.txt.我想要做的是打开x.txt,从文件中提取正则表达式匹配并将其设置为参数.任何人都可以给我一些指示吗?

编辑

所以x.txt我有以下几行

$variable = '1.2.3';
Run Code Online (Sandbox Code Playgroud)

我需要1.2.3从文件中提取到我的bash脚本然后用于zip文件

vla*_*adr 6

用于sed有效地一次通过:

var=$(sed -ne "s/\\\$variable *= *['\"]\([^'\"]*\)['\"] *;.*/\1/p" file)
Run Code Online (Sandbox Code Playgroud)

无论您的值是用单引号还是双引号括起来,上述方法都有效.

另请参阅GNU Grep可以输出选定的组吗?.

$ cat dummy.txt
$bla = '1234';
$variable = '1.2.3';
blabla
$variable="hello!"; #comment

$ sed -ne "s/\\\$variable *= *['\"]\([^'\"]*\)['\"] *;.*/\1/p" dummy.txt
1.2.3
hello!

$ var=$(sed -ne "s/^\\\$variable *= *'\([^']*\)' *;.*/\1/p" dummy.txt)

$ echo $var
1.2.3 hello!
Run Code Online (Sandbox Code Playgroud)

†或者至少sedgrep您选择的平台上的数据相比,能够有效地流失数据.:)