Articles of 正则expression式

是否有一个工具,可以顶一个inputstream?

我遇到了很多使用情况,从一个(通常是换行符分隔的)stream中获取input,并以顶级的方式汇总它(参见top,iotop等)将会非常有用。 一种即时的数据透视表。 例如采取log-esqueinput: I heard A from unit 1 and it said "Great!" 56 I heard A from unit 2 and it said "Oh no!" 42 I heard C from unit 1 and it said "Waiting for input." 33 I heard B from unit 3 and it said "Stopped." -1 … 从这里,我们可以运行一个正则expression式和组指标的工具: topify [lineout] [regex] […]

使用ack-grepsearch文字“> \”

我正在寻找字面大于字符(“>”),后面跟着反斜杠字符(即“\”)的空格,例如: 我以为逃避会允许这样做,而对于更大的事情呢? $ ack-grep“\>” 返回其中包含“>”的行。 但是,当我试图逃避反斜杠以及我得到: $ ack-grep“\> \\” ack-grep:无效的正则expression式'\> \': 尾随\正则expression式m / \> /

rsync:如何排除最顶层目录中的Dotfiles?

在使用rsync在Bash下执行备份时,我试图排除顶部目录中的所有点文件和隐藏目录,但不包括其他目标目录中的所有点文件和隐藏目录。 例如: /copyme.c /.dontcopythisfile /.dontcopythisdirectory/or_its_contents /directory/.butcopymetoo rsync -a –include=".includeme" –exclude=".*" . DEST rsync -a –include=".includeme" –exclude=".*" . DEST无法在子目录中复制所需的点文件,但诸如–exclude="./.*"变体也会失败。 build议? 这是否需要一个过滤规则,而不是简单 – 排除?

使用正则expression式在Linux中重命名文件

我有一组文件,我想一致重命名,文件被命名为像 "System-Log-01-01-2009-NODATA.txt" "Something-Log-01-01-2009-NODATA.txt" 我希望它们是小写,yyyymmdd,.log扩展名 "system.20090101.log" "something.20090101.log"

清理CIDR范围

有时我想从我的Apache日志文件grep CIDR范围。 对于落在自然边界(/ 8,/ 16和/ 24)的范围很容易,但对于其他范围(如/ 17和/ 25)则不那么容易。 例子: # 192.168.0.0/16: (easy) grep " 192\.168\." access_log # 192.168.128.0/17: (more thought required) grep -E " 192\.168\.(12[89]|1[3-9][0-9]|2[0-5][0-9])\." access_log # 192.168.0.0/17: (more thought required) grep -E " 192\.168\.([0-9]|[0-9][0-9]|1[01][0-9]|12[0-7])\." access_log # 192.168.128.0/18: (straining my brain) grep -E " 192\.168\.(1[2-8][0-9]|19[01])\." access_log 这些正则expression式会忽略包含前导零的IP地址,如192.168.001.001 ,这在Apache日志文件中不是问题,但可能位于其他日志文件中。 打印机似乎特别喜欢领先的零。 向正则expression式添加可选的零是很容易的,但它使整个事情变得更加困难。 必须有一个更简单的方法。 有没有一种简单的方法从文件中select符合任何CIDR范围的行? 花式正则expression式的扩展将被视为不同的工具(如awk或perl如果有必要,但我希望它是一行),如果他们使工作更容易。 理想情况下,我想要的是类似的东西 grep […]

什么是PCRE限制?

在ModSecurity中, PCRE limits exceeded错误。 我知道我可以通过设置规则来解决这个问题,例如: SecPcreMatchLimit 150000 SecPcreMatchLimitRecursion 150000 但是,这些规则究竟在做什么呢? PCRE限制recursion设置为150,000是什么意思? 我可以通过设置这么高的安全漏洞? recursion和limit是什么意思? 我知道这里有文档,但是文档实际上并没有告诉我发生了什么,它只是告诉我如何处理这些指令。

使用sed删除围绕string的开合方括号

我在Ubuntu 12.04.1 LTS的bash shell中运行这个命令。 我试图一举删除[和]字符,也就是说,不必再次inputsed。 我知道方括号在正则expression式中有特殊含义,所以我通过预先加一个反斜杠来逃避它们。 我期待的结果只是string123但方括号仍然存在,我很想知道为什么! ~$ echo '[123]' | sed 's/[\[\]]//' [123]

nginx重写在url的末尾添加一个参数

我需要configuration我的反向代理,以便在url的末尾添加以下参数: &locale=de-de 这几乎可以工作: rewrite ^(.*)$ $1&locale=de-de break; 但是,问题是我只需要添加'&locale = de-de', 只要它不在那里,如果有'?' 在url… 我可以帮助制定正确的正则expression式来做到这一点? 另一个问题:为什么我的url中的问号不显示,如果我使用这个: $ URI?的$ args 或$ uri $ is_args $ args转换未编码的url,问号显示为%3f。 想法? 编辑:似乎这个行为存在与proxy_pass结合使用。 在一个简单的重写它真的很好。

使用量词时nginx pcre_compile错误

我有一个别名问题。 我想追加到文件的前4位作为目录的一部分。 (如'../123456.jpg'=>'../123/123456.jpg'和'../12.png'=>'../12/12.png') 这是我有什么: location ~ ^/i/gallery2/(\d{1,4})(.*)$ { alias /home/web/images/gallery/$1/$1$2; } 这是我得到的错误: nginx: [emerg] pcre_compile() failed: missing ) in "^/i/gallery2/(\d" 任何人有任何想法如何得到这个工作? 它看起来像“{1,4}”有问题有没有另外一种方法可以做到我想要的?

确认search文字string

当我想要searchhtml标记的一部分时,我厌倦了不得不逃脱的东西。 我怎样才能确切地search我input的内容, 而不必逃避东西? 例如 ack-grep 'console.log(foo' 我得到: Unmatched ( in regex; marked by <– HERE in m/console.log( <– HERE par/