标签: regular-expressions

Shell 脚本和正则表达式:哪个更适合匹配数字,[[:digit:]] 或 [0-9]?

正如标题所暗示的,哪个更适合匹配数字,[[:digit:]]还是[0-9]

我正在使用 bash shell

谢谢 :)

bash unix-shell regular-expressions

4
推荐指数
1
解决办法
1208
查看次数

nginx:多个匹配的位置块

我尝试设置 max-age 标头指令和 Content-Disposition “附件”如下:

location / {

    # set up max-age header directive for certain file types for proper caching
    location ~* \.(?:css|js|ico|gif|jpe?g|png|mp3|mpeg|wav|x-ms-wmv|eot|svg|ttf|woff|woff2)$ {
        expires 7d;
        add_header Cache-Control "public";
    }

    # force download for ceratain file types
    location ~* \.(?:fb2|mobi|mp3)$ {
         add_header Content-Disposition "attachment";
    }
...
}
Run Code Online (Sandbox Code Playgroud)

问题在于 .mp3 文件与两个位置块都匹配。仅使用第一个 (max-age)。我怎样才能同时拥有 .mp3 文件 - max-ageContent-Disposition “附件”?

nginx regex http-headers regular-expressions

4
推荐指数
1
解决办法
7591
查看次数

使用 Ansible regex_search 提取部分字符串并将输出保存为变量

我在文件中有如下内容。

dataDir=/var/lib/zookeeper
4lw.commands.whitelist=mntr,conf,ruok,stat
syncLimit=2
Run Code Online (Sandbox Code Playgroud)

我想使用 Ansible读取dataDir的值并将其设置为变量。我已经编写了以下代码,但是正则表达式和存储变量都有一些问题。

  - name: Read zoo.cfg content
    shell:
      cmd: cat zoo.cfg
    register: zoo_config_content

  - set_fact:
      my_var: "{{ zoo_config_content.stdout | regex_search('dataDir.*')}}"

  - name: Print
    debug:
      var: my_var
Run Code Online (Sandbox Code Playgroud)

Q1.) 如何改进正则表达式以仅获取/var/lib/zookeeper

Q2.) 如何存储提取的值以在另一个任务中使用?

regex regular-expressions ansible ansible-playbook

4
推荐指数
1
解决办法
1万
查看次数

在 shell 脚本中使用 sed 替换文件中的 IP 地址

我有一个脚本,它在文件中找到一个字符串并将其替换为一个新字符串。

$ sed -i 's/$old_string'/'$new_string'/g' $FILENAME
Run Code Online (Sandbox Code Playgroud)

现在我需要条件是一个正则表达式,它还检查旧字符串后面是否有除数字以外的任何内容。

我试过这个,但没有用:

$ sed -i -r 's/$old_string(^[0-9])+/$new_string/g' $FILENAME
Run Code Online (Sandbox Code Playgroud)

任何的想法?

linux shell centos sed regular-expressions

3
推荐指数
1
解决办法
2万
查看次数

将花括号添加到 nginx 中的 Map 块

我在尝试使以下配置工作时遇到问题。每次我运行配置测试时,我都会失败。首先让我向您展示一个工作配置

location / { if ($query_string ~ "mosConfig_[a-zA-Z_]{1,21}(=|\%3D)"){ return 403; } }

但是当我尝试变得有点聪明并将它放在地图块中时,我得到了一个错误

map $query_string $edgars_access_denied { default "200"; ~mosConfig_[a-zA-Z_]{1,21}(=|\%3D) "403"; }

nginx regular-expressions

3
推荐指数
1
解决办法
1597
查看次数

重定向所有包含 1 个特定单词但不包含其他单词的 URL

我正在将我的网站迁移到另一个平台,但是当我完成新网站的所有页面的开发时,我需要我的用户在这两个平台之间导航。

因此,我需要对包含 1 个特定单词但不包含其他单词的所有 URL 进行 301 重定向:

例子:

  1. 旧网站:www2.misite.com
  2. 新网站:www.misite.com

我需要重定向所有包含“www2.misite.com/travel(.*)”但不包含“reservation”和“hotel”一词的 URL。

我的服务器是Nginx,不知道是用正则表达式还是用nginx语句完成的。

非常感谢。

nginx regex regular-expressions

3
推荐指数
1
解决办法
4万
查看次数

带有正则表达式的 postfix smtp_generic_maps

我刚刚开始尝试使用 postfix 重写发件人地址。debian-7.11我用和运行服务器postfix-2.9.6

内容/etc/postfix/main.cf

[...]
smtp_generic_maps = hash:/etc/postfix/generic
[...]
Run Code Online (Sandbox Code Playgroud)

内容/etc/postfix/generic

santiago@uranus.caoba.fr        santiago.uranus.caoba.fr@caoba-mail.fr
auguste@uranus.caoba.fr         auguste.uranus.caoba.fr@caoba-mail.fr
Run Code Online (Sandbox Code Playgroud)

到目前为止它有效。当用户santiago发送电子邮件时,它会按照santiago.uranus.caoba.fr@caoba-mail.fr我想要的方式发送。

我的问题是我希望任何用户都可以执行此重写,而不必向/etc/postfix/generic. 所以我想知道是否可以通过某种正则表达式来完成,例如:

(.*)@$hostname  $1.$hostname@caoba-mail.fr
Run Code Online (Sandbox Code Playgroud)

这有可能吗?

感谢您的帮助

圣地亚哥

postfix regular-expressions rewritemap

3
推荐指数
1
解决办法
6224
查看次数

ssh 配置中的正则表达式匹配

我有一堆名称为 srv1.domain.com、srv2.domain.com、...、srv50.domain.com 的服务器

我希望能够通过以下方式连接到这些服务器 ssh srv1

我不想将 50 个配置条目放到我的 .ssh/config 中,例如

HOST srv1
HOSTNAME srv1.domain.com
USER amac
IdentityFile /home/amac/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

我喜欢的是正则表达式匹配,它允许我写一些类似的东西

HOSTNAME (srv[0-9]*).domain.com
HOST \1
USER amac
IdentityFile /home/amac/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

这可能吗?也许通过创建一个 bash 别名将“srv(.*)”的所有实例转换为 srv\1.domain.com,其中 \1 对应于正则表达式匹配的括号中的子字符串?

谢谢。

ssh configuration bash regular-expressions

2
推荐指数
2
解决办法
9082
查看次数

nginx httpMapModule 正则表达式变量

HttpMapModule文件指出:

从 1.0.4 开始,可以通过在模式前加上 ~* 来使用不区分大小写的正则表达式。

并举例:

map $uri $myvalue {
    /aa                   /mapped_aa;
    ~^/aa/(?<suffix>.*)$  $suffix;
}
Run Code Online (Sandbox Code Playgroud)

我更新为nginx/1.2.7使用它,并且天真的正则表达式可以正常工作,但变量却不能。当我尝试上述语法时,出现错误:

nginx: [emerg] pcre_compile() failed: unrecognized character after (?< in "^/aa/(?<suffix>.*)$" at "suffix>.*)$"
Run Code Online (Sandbox Code Playgroud)

我还尝试了以下语法,但都没有奏效:

~^(.*)$  $1;
~^(.*)$  \1;
Run Code Online (Sandbox Code Playgroud)

但他们都没有工作。

有谁知道如何让变量在 HttpMapModule 中的正则表达式中工作?

nginx regex regular-expressions

2
推荐指数
1
解决办法
1万
查看次数

GREP 中的正则表达式

我有一个 .xml 文件。里面的标签是:

<Info>Product</Info>
Run Code Online (Sandbox Code Playgroud)

现在,我在文件中有 20 000 个这样的标签。然而,一个标签可以正常启动,但缺少正确的结束标签。如何找到哪一行正确开始但没有以正确的标签结束?

谢谢。

grep regular-expressions

1
推荐指数
1
解决办法
114
查看次数

如何使用find命令清除所有文件的内容

是否有使用 find 命令清除所有“.log”文件内容的简单步骤 。

目前我正在使用“echo -n > filename.log”我试过 echo -n > /var/application-logs/*.log 但它不起作用..

有没有更好的方法来清除多个文件的内容?

scripting bash regular-expressions

0
推荐指数
1
解决办法
3091
查看次数