我有一个文件,我需要使用正则表达式获取一段文本。我们将该文件命名为 x.txt
。我想做的是打开 x.txt
,从文件中提取正则表达式匹配并将其设置为参数。任何人都可以给我一些建议吗?
编辑
所以在 x.txt
中我有以下行
$variable = '1.2.3';
我需要从文件中提取 1.2.3
到我的 bash 脚本中,然后用于 zip 文件
最佳答案
使用sed
一次有效地†完成:
var=$(sed -ne "s/\\\$variable *= *['\"]\([^'\"]*\)['\"] *;.*/\1/p" file)
无论您的值是用单引号 还是 双引号括起来,上面的方法都有效。
另见 Can GNU Grep output a selected group? .
$ 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!
† 或至少与 sed
在您选择的平台上与 grep
相比可以高效地处理数据。 :)
关于regex - BASH shell 使用正则表达式从文件中获取值到参数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13337550/