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



我有一个文件,我需要从使用正则表达式中获取一段文本。我们将该文件称为x.txt。我想做的是打开x.txt,从文件中提取正则表达式匹配并将其设置为参数。谁能给我一些指示?

编辑

所以在x.txt我有以下行

$variable = '1.2.3';

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

使用sed在单次传递中有效地完成

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

无论您的值括在单引号还是双引号中,上述方法都有效。

另请参阅 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!

与所选平台上的grep相比,†或至少与sed一样高效地处理数据。 :)

您可以使用 grep-chop-chop 技术

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

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

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

相关内容

  • 没有找到相关文章