Articles of 正则expression式

Logstash Grokparsing失败

我需要匹配这个条目 2015/10/30 23:58:21 pid 22223 [email protected] 192.168.0.1 [p4/2012.2/LINUX26X86_64/536738] 'test-monitor show' 为了匹配这个,我写了这个正则expression式 P4_DATE (?>\d\d){1,2}\/(?:0[1-9]|1[0-2])\/(?:(?:0[1-9])|(?:[12][0-9])|(?:3[01])|[1-9]) P4_TIME (?:2[0123]|[01]?[0-9])\:(?:[0-5][0-9])\:(?:(?:[0-5]?[0-9]|60)(?:[:.,][0-9]+)?) P4_PID \b(?:[1-9][0-9]*)\b P4_USER \b\w+\b P4_HOSTNAME \b(?:[0-9A-Za-z][0-9A-Za-z-]{0,62})(?:\.(?:[0-9A-Za-z][0-9A-Za-z-]{0,62}))*(\.?|\b) P4_IP (?<![0-9])(?:(?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])[.](?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])[.](?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])[.](?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5]))(?![0-9]) 然后整体 P4_MATCH %(P4_DATE:p4date} %{P4_TIME:p4time} pid %{P4_PID:p4pid} %{P4_USER:p4user}\@%{P4_HOSTNAME:p4client} %{P4_IP:p4remoteclient} [%{DATA:p4version}] \'%{DATA:p4action}\'" } 然后通过匹配 match => [ "message", "%{P4_MATCH}" ] 但仍然会出现“_beats_input_codec_plain_applied,_grokparsefailure” 我不是一个正规expression专家,但任何帮助真的很感激。

后缀:从ldap查询修改电子邮件地址

我们查询LDAP来识别Postfix服务器上的别名和用户。 由于公司相关的原因,一些电子邮件地址格式为“SMTP:[email protected]”。 为了将邮件转发给这个用户,我们需要切断前面的“SMTP:”。 一个解决scheme可能是使用正则expression式,但我们已经使用了ldap模块,我找不到如何一起使用,例如查询ldap并使用正则expression式修改结果。 如何才能做到这一点?

Nginx的图像文件名通过修改与正则expression式uri去除尺寸

在nginxconfiguration中,如果给定wordpress图像命名/大小符号约定,找不到所需的图像大小时,返回原始图像的最佳方法是什么。 所以,如果找不到/image-name-150×170.png,我想要返回/image-name.png。 -150-170部分可以是其他一些数字。 因此,我想在文件名中的点前1-4位数字x 1-4位删除。 我想把replace在uri代码里面@static_full位置块或重写。 想知道哪个更好的performance明智。 #some locations here and then location ~* ^.+\.(png|gif|jpg|jpeg){ access_log off; log_not_found off; expires max; error_page 404 = @static_full; #if not found, seek #static_ful } location @static_full{ #modify uri here to remove image dimensions like below #uri = remove dash 1-4 digits x 1-4 digits before dot #or rewrite […]

是否可以使用Lighttpd $ HTTP 条件来dynamic启用ssl.verifyclient。*选项?

我应该为网站的单个terminal启用ssl.verifyclient。*选项,以继续证书login或validation。 但它不工作。 configuration: $HTTP["host"] =~ "^(.*\.|)example.com$"{ $SERVER["socket"] == ":443" { protocol = "https://" ssl.engine = "enable" ssl.disable-client-renegotiation = "disable" #server.name = "example.com" ssl.pemfile = "/etc/lighttpd/ssl/example.com.pem" ssl.ca-file = "/etc/lighttpd/ssl/bundle-ca.pem" ssl.honor-cipher-order = "enable" #ssl.cipher-list = "ECDHE-RSA-AES256-GCM-SHA384" #ssl.use-compression = "disable" setenv.add-response-header = ( "Strict-Transport-Security" => "max-age=63072000; includeSubDomains; preload", "X-Frame-Options" => "DENY", "X-Content-Type-Options" => "nosniff" ) ssl.use-sslv2 = "enable" […]

LocationMatch正则expression式可以匹配查询string部分吗?

我正在尝试使用LocationMatch正则expression式来尝试匹配某个file upload或通过应用程序下载时。 该应用程序在URL中使用查询string。 请求: “POST /uploads.js?attachment_id=2&filename=issues%20(12).csv&content_type=application%2Fvnd.ms-excel HTTP / 1.1”200 336 我注意到,正则expression式似乎无法看到“?”后面的查询string。 在URL中。 那是对的吗? 为什么? 有没有办法能够正则expression式在查询string部分匹配什么?

Ansible匹配并使用正则expression式更改bash提示符

我想从中更改bash命令提示string PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' 至 PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' 具体来说,它将颜色从绿色变为红色,更改为32到31。 我想更改文件,而不是部署/复制在一个完整的文件。 我想通过文件search,并更改线,如果它匹配的任何情况。 我试着逃避所有的特殊字符,但YAML正则expression式抱怨\和各种字符。

Nginx通过子目录名重写多个GETvariables?

我目前正在使用nginx重写来传递服务器variables。 我可以像这样传递一个variables: http://example.com/test : http://example.com/test ,它可以通过: http://example.com/?p=test : http://example.com/?p=test 。 我这样做: location / { rewrite ^/([^/\.]+)$ /?p=$1 break; } 现在我想能够使用子目录传递variables,以便映射发生像这样: http://example.com/profile/user1 => http://example.com/?p=user1 我想要有这样的多个规则,以便在同一个网站上,我也有一个像这样的规则: http://example.com/play/vid1 => http://example.com/?v=vid1 我试过这个,但没有奏效: location /profile/ { rewrite ^/([^/\.]+)$ /?p=$1 break; } location /play/ { rewrite ^/([^/\.]+)$ /?v=$1 break; } 我也尝试没有像后面的斜杠: location /profile { rewrite ^/([^/\.]+)$ /?p=$1 break; } location /play […]

sed:如何从path中提取最后两个(或任意数量)的目录

我真的在寻找一个通用的解决scheme,但为了举例,让我们说我正在寻找path中最深的2个目录。 例如:给定一个path/home/someone/foo/bar ,如何使用sed(或awk)来获取foo/bar 如果path的第一部分总是相同的话,这将是简单的,但在我的情况下,我正在寻找一个适用于任意path的expression式,理想情况下,对于任何深度n 。 如果pathless于n (在本例中为2)级别,则命令的行为并不重要。 我今天去做这个,发现它很棘手。 我开始写一个循环来代替它,但是我不能动摇这种在一个命令中可能发生的事情。 我可能是错的。 有任何想法吗?

在Solaris 9上使用/ usr / xpg4 / bin / tr和/ usr / bin / tr出现exception

我有一个像这样的文件, "xxxxxx" "yyyyyy" "aaaaaa" "cccccc" "bbbbbb" "eeeeee" "oooooo" "zzzzzz" 想要replace这个文件中的每个\n我使用: tr '\n' ',' < INPUT > OUTPUT 哪个工作正常。 输出是预期的: "xxxxxx","yyyyyy","aaaaaa","cccccc"…. 然而 我不能在这个文件上使用sed或awk进行任何操作,但是在Linux中使用GNU软件包的时候,没有任何操作(结果总是空的,例如: sed 's/,/hello/g'什么都不显示)很好,但与非GNU不。 谁能告诉我这是为什么? 提前致谢, 安德斯

通用.htaccess www.redirect

这里有很多关于如何将example.comredirect到www.example.com的示例,但是我正在寻找一个通用版本,所以相同的htacess代码也可以将example.netredirect到www.example.net和example.org到www.example.org 。 我确信这存在(事实上,我有一个模糊的记忆,我以前做过,在某个地方),但我很不熟悉htaccess的正则expression式。 我需要一种方法来匹配条件HTTP_HOST不以www.开头www. 。