Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bashshell使用regex将值从文件中获取到参数中_Regex_Bash_Shell - Fatal编程技术网

bashshell使用regex将值从文件中获取到参数中

bashshell使用regex将值从文件中获取到参数中,regex,bash,shell,Regex,Bash,Shell,我有一个文件,我需要从使用正则表达式中获取一段文本。我们将调用文件x.txt。我想做的是打开x.txt,从文件中提取正则表达式匹配项并将其设置为参数。有人能给我一些建议吗 编辑 因此,在x.txt中,我有下面一行 $variable = '1.2.3'; 我需要将1.2.3从文件中提取到我的bash脚本中,然后用于zip文件用于高效完成†一次完成: var=$(sed -ne "s/\\\$variable *= *['\"]\([^'\"]*\)['\"] *;.*/\1/p" file)

我有一个文件,我需要从使用正则表达式中获取一段文本。我们将调用文件
x.txt
。我想做的是打开
x.txt
,从文件中提取正则表达式匹配项并将其设置为参数。有人能给我一些建议吗

编辑 因此,在
x.txt
中,我有下面一行

$variable = '1.2.3';
我需要将
1.2.3
从文件中提取到我的bash脚本中,然后用于zip文件

用于高效完成†一次完成:

var=$(sed -ne "s/\\\$variable *= *['\"]\([^'\"]*\)['\"] *;.*/\1/p" file)
无论您的值是用单引号还是双引号括起来,上述方法都有效

另见


†或者与您选择的平台上的
grep
相比,至少与
sed
可以在数据中翻滚的效率一样高。:)

您可以使用grep chop技术

var="$(grep -F -m 1 '$variable =' file)"; var="${var#*\'}"; var="${var%\'*}"

如果所有文件行都具有该格式(
$='
),则可以像这样使用
cut

value=$(cut -d"'" -f2 file)

var=$(grep regex文件)
或者您需要更具体一些。谢谢Kevin。乍一看,这可能就是我需要的。我实际上想从grep(组1)中提取一个组号。这能处理吗?你是说像
组[0-9]\+
?当然或者,如果您只是想要数字,
grep-oP'(?不,他可能是指
var=$(sed-ne的/^[^=]*=*'\([^']*\')./\1/p'文件)
感谢您的快速回复。我已经更新了上面的问题,以澄清文件中的内容和我需要获取的内容。不幸的是,它不是php脚本。谢谢,我必须研究一下
sed
,因为它似乎是一个很棒的工具。不幸的是,无论出于什么原因,上面的问题似乎都不起作用。我看到了;您的输入实际上是一个PHP脚本,因此该行可能是缩进的;我从正则表达式中删除了
^
,请继续并重试。由于您正在处理的是PHP脚本,因此我更新了regexp以同时处理双引号。:)感谢您的更新。代码确实可以工作,但是我已经使用了上面的代码,现在它可以工作了。我对你的答案投了赞成票。再次谢谢你,没问题。我假设您感兴趣的作业基本上总是在文件的顶部,并且之前不能进行任何形式的测试
$variable==…
(接受答案中的
grep
将与之匹配。):)如果您认为您的php源代码有两个或两个值,请确保您修改了acepted答案,以检查双引号字符串以及
=
周围的不同间距。:)
value=$(cut -d"'" -f2 file)