php - shell 相当于 php preg_match?

标签 php regex shell grep

是否有与 PHP 的 preg_match 等效的 shell?

我正在尝试从 shell 脚本中的这个字符串中提取数据库名称。

define('DB_NAME', 'somedb');

在 PHP 中使用 preg_match 我可以做这样的事情。

preg_match('define(\'DB_NAME\','(.*)'\'\)',$matches);
echo $matches[1];

我怎样才能在 shell 脚本中完成同样的事情?

最佳答案

使用 expr 可以准确回答问题:

expr match "string" "regexp"

因此,根据您的需要,您可以这样写:

expr match "$mystring" "define('DB_NAME', '\([^']\+\)');"

注意 \(\) 对。 如果没有这些字符,expr 将返回匹配字符的数量。 有了它们,只返回匹配的部分。

$ string="define('DB_NAME', 'toto');"
$ expr match "$string" "define('DB_NAME', '[^']\+');"
26

$ string="define('DB_NAME', 'toto');"
$ expr match "$string" "define('DB_NAME', '\([^']\+\)');"
toto

不过,我不知道 expr 在哪些环境下可用(并且有这种行为)。

关于php - shell 相当于 php preg_match?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1425121/

相关文章:

php - 获取数据库的最后一个实体,增加它的值并创建新记录 PHP SQL

php - 强制页面从服务器重新加载而不是加载缓存版本

javascript - 检查字符串是否以标点符号开头(Javascript)

python - 从 Python 运行 bash 脚本但出现 Windows 错误 193

php - PyCharm - 社区版是否能够突出显示 php?

java - 查找所有 "character-equal"字符串的高效算法?

python - 如何用另一个索引字符串 Python 替换 String 的所有实例

正则表达式 - 如何排除单个单词?

c - 管道与 printf 命令

python没有正确执行shell命令 "mail"