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

标签 regex 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)

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

另见 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/

相关文章:

c - 如何使用 chdir() 函数返回目录?

python - 在 Python MULTILINE 模式下仅匹配字符串的开头

regex - 如何grep包含标点符号的字符串?

java - 如何执行网络抓取以在 Google App Engine 上查找 Java 中的特定链接页面?

linux - Linux 中日志频繁轮转时如何复制所需的日志文件内容

shell - 使用 Grep 搜索 CSV 文件

正则表达式 - 如何匹配除特定模式之外的所有内容

bash - 为什么第一个词会丢失?

python - 从日期时间转换为 GPS 时间

shell - 运行 shell 脚本时如何在 Jenkins 中将构建标记为不稳定