草庐IT

menta-regex

全部标签

regex - 使用基于 sed/awk 的 linux 替换字符串

我想替换这个#!/usr/bin/envbash有了这个#!/bin/bash我尝试了两种方法方法一original_str="#!/usr/bin/envbash"replace_str="#!/bin/bash"seds~${original_str}~${replace_str}~filename方法二line=`grep-n"/usr/bin"filename`awkNR==${line}{sub("#!/usr/bin/envbash","#!/bin/bash")}但是他们两个都不行。 最佳答案 您不能在BASH的双引号

regex - 期望正则表达式数字模式

我在expect脚本中遇到了这个问题。我想在命令输出为“0”时捕获并与其他数字或链(如“000”或“100”)区分开来我的代码是:#!/usr/bin/expect-fsettimeout3spawnbashsend"echo0\n"expect{-regexp{^0$}{send_user"\nzero\n"}-re{\d+}{send_user"\number\n"}}send"exit\n"我有以下回应:spawnbashecho0number但是下面的正则表达式不起作用:-regexp{^0$}{send_user"\nzero\n"}如果我把它改成:-regexp{0}{se

regex - 根据 Linux 中文件的数量重命名目录

我有以下布局:d1f1f2f3d2f4f5d3f6f7f8d4f9我想做的是重命名根目录以包含其中包含的(递归)文件数。只要不是太长,格式就不是特别重要。我希望能够每隔一小时左右将此脚本作为cron运行一次以更新目录名称,因此在第一次运行后它将如下所示:3-d1f1f2f32-d2f4f54-d3f6f7f8d4f9然后第二次运行后,可能又添加和删除了几个文件,现在看起来像这样:1-d1f14-d2f2f3f4f510-d3f6f7f8d4f9F10f11f12f13f14f15到目前为止,我有以下bash脚本,但我不知道如何对文件名进行正则表达式替换#!/bin/bashTARGET

regex - 如何用通用电子邮件地址替换一组文件中的所有电子邮件地址

我有一些脚本在不同域中有很多电子邮件地址(比如domain1.com,domain2.com。我想用一些通用电子邮件替换所有这些公共(public)域中的地址,比如domain.com,保持脚本的其余部分相同。我在sed中使用下面的代码,但它似乎不起作用。(它返回与输入相同的输出,所以看起来搜索不匹配。但是,当我在在线测试器中测试正则表达式\S+@\S+/时,它似乎与电子邮件地址匹配。)s/\S+@\S+/genericid@domain.com/g比如我有2个脚本$catscript1.shabcd.efg@domain.comexportSENDFROM="xyz@domain1.

regex - 如何使用 grep 和正则表达式查找目录中的所有文件?

我在Apache服务器上有一个目录(Linux/Unix),其中有很多子目录包含很多这样的文件:-Dir-2010_01/-142_78596_101_322.pdf-12_10.pdf-...-2010_02/-...Howcanifindallfileswithfilesnameslookinglike:*_*_*_*.pdf?where*isalwaysadigit!!Itrytosolveitlikethis:ls-1Rl2010-01|grep-i'\(\d)+[_](\d)+[_](\d)+[_](\d)+[.](pdf)$'|wc-l但是正则表达式\(\d)+[_](\d

java.util.regex.Pattern$BmpCharProperty.match 处的 java.lang.StackOverflowError(Pattern.java :3715)

我在使用时收到StackOverflowError以下RegEx:"([A-Z][A-Z]\\d\\d[A-Z]\\[(\\*|(((\\d|\\d\\d)-(\\d|\\d\\d))|(\\d|\\d\\d)))\\](,|$))+";匹配这样的String:RA01D[1-1],RA01D[17-17],RA01D[2-2],RA01D[18-18] 最佳答案 什么stribizhev'sanswer已经指出并修复了正则表达式中的低效率。这里没有灾难性的回溯。此更改只会稍微延迟StackOverflowError而不会解决它(请

regex - sed: 无法解决这个正则表达式

我正在尝试使用两个sed命令替换php文件中的两个字符串,找不到我错的地方。想从字符串转换setlocale(LC_ALL,$_COOKIE['lang']);和putenv("LANGUAGE=".$_COOKIE['lang']);到字符串setlocale(LC_ALL,$_COOKIE['lang'].'.utf8');和putenv("LANGUAGE=".$_COOKIE['lang'].'.utf8');到目前为止我已经做了以下但没有用sed-i"s/setlocale\(LC_ALL,\$_COOKIE\['lang'\]\);.*$/setlocale\(LC_ALL

regex - 使用 sed 或 grep 提取

我对grep和sed命令相当陌生。+50.0如何从Core0中提取:+50.0°C(high=+80.0°C,crit=+90.0°C)在bash脚本中使用grep或sed?acpitz-virtual-0Adapter:Virtualdevicetemp1:+50.0°C(crit=+89.0°C)temp2:+50.0°C(crit=+89.0°C)coretemp-isa-0000Adapter:ISAadapterCore0:+50.0°C(high=+80.0°C,crit=+90.0°C)Core2:+47.0°C(high=+80.0°C,crit=+90.0°C)Bas

regex - 从文件中提取电话号码

我确定这个问题的答案已经在线,但我不知道我在找什么。我刚开始学习Unix/Linux类(class),我爸爸让我为他的工作做点什么。他有一个文本文件,每四行某处有一个10位数字。我如何制作仅包含数字的列表?我假设该文件看起来像这样:RandomjunkRandomjunkfakenumber1234567809RandomjunkMyphonenumberis1234567890anditishererandomnumbers32131;1231RandomjunkRandomjunkanotherfakenumber2345432345RandomjunkJustkiddingmyp

regex - Perl\R 正则表达式去除 Windows 换行符

我正在使用Perl脚本,使用以下代码删除输入文件中可能的Windows换行符:foreach我的$line(split/\r|\R/)在两台不同的Linux机器上执行相同的脚本会有不同的结果。在machine1上,脚本按预期工作,在machine2上,每次发现大写“R”字符时,行都会被拆分,结果一团糟。我想知道\R正则表达式是否正确以及如何使machine2按预期运行。 最佳答案 在Perl中,处理回车的方式有几个不同之处:\nmatchesaline-feed(newline)character(ASCII10)\rmatches