草庐IT

REGEX_EXTRACT

全部标签

regex - 无法使用 sed 或 grep 提取捕获组

我想从键值对语法中提取值对,但我不能。我试过的例子:echoemployee_id=1234|sed's/employee_id=\([0-9]+\)/\1/g'但这给出了employee_id=1234而不是1234实际上是捕获组。我在这里做错了什么?我也试过了:echoemployee_id=1234|egrep-oemployee_id=([0-9]+)但没有成功。 最佳答案 1.使用grep-Eo:(因为egrep已弃用)echo'employee_id=1234'|grep-Eo'[0-9]+'12342。使用grep-o

regex - shell脚本中 "=~"运算符的含义

这个问题在这里已经有了答案:Bashregex=~operator(3个回答)关闭6年前。我遇到了一个shell脚本,代码是forlinein$LIST_ARRAY;doif[[$LIST_ARRAY=~$line]]thenecho"true"........这种情况下=~有什么用? 最佳答案 这是允许在if语句中使用正则表达式的EqualTilde运算符。Anadditionalbinaryoperator,=~,isavailable,withthesameprecedenceas==and!=.Whenitisused,th

regex - 我在 GNU sed 中的前瞻正则表达式有什么问题?

这就是我正在做的(简化示例):gsed-i-E's/^(?!foo)(.*)$/bar\1/'file.txt我试图将bar放在不以foo开头的每一行前面。这是错误:gsed:-eexpression#1,char22:Invalidprecedingregularexpression怎么了? 最佳答案 sed-i'/^foo/!s/^/bar/'file.txt-i原地修改文件/^foo/!只对以foo^foo开头的非!行执行下一个操作s/^/bar/将行首改为bar 关于regex-

regex - 如何在 linux shell 中使用正则表达式从文件中提取 IP 地址?

如何在linuxshell中通过正则表达式提取文本部分?可以说,我有一个文件,其中每一行都有一个IP地址,但位置不同。使用常见的unix命令行工具提取这些IP地址的最简单方法是什么? 最佳答案 您可以使用grep把它们拉出来。grep-o'[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'file.txt 关于regex-如何在linuxshell中使用正则表达式从文件中提取IP地址?,我们在StackOverflow上找到一个

regex - 如何在 linux shell 脚本中使用正则表达式搜索文件

已结束。这个问题是off-topic.它目前不接受答案。想要改进这个问题?Updatethequestion所以它是on-topic堆栈溢出。关闭9年前。Improvethisquestion假设,我想在linux的所有子目录中,从shell脚本中搜索文件名中包含python的文件。如何使用正则表达式搜索所有位置? 最佳答案 查找所有.py文件。find/-name'*.py'查找名称中包含“python”一词的文件。find/-name'*python*'同上,但不区分大小写。find/-iname'*python*'正则匹配,更

regex - 从 ifconfig 的输出中提取 MAC 地址的最佳方法?

从ifconfig的输出中提取MAC地址的最佳方法是什么?样本输出:bash-3.00#ifconfigeth0eth0Linkencap:EthernetHWaddr1F:2E:19:10:3B:52inetaddr:127.0.0.66Bcast:127.255.255.255Mask:255.0.0.0UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1........我应该使用cut,AWK或其他任何方法,以及一种方法相对于另一种方法的优点和缺点。 最佳答案 /sys/class/下可以做猫

regex - 更改文件夹中的所有匹配项

我需要对文件夹(及其子文件夹)中的所有文件进行正则表达式查找和替换。执行此操作的linuxshell命令是什么?例如,我想对所有文件运行此命令,并用新的替换文本覆盖旧文件。sed's/oldtext/newtext/g' 最佳答案 仅使用sed是无法做到的。您至少需要同时使用find实用程序:find.-typef-execsed-i.bak"s/foo/bar/g"{}\;此命令将为每个更改的文件创建一个.bak文件。注意事项:sed命令的-i参数是GNU扩展,因此,如果您使用BSD的sed运行此命令,您将需要将输出重定向到一个新

regex - 使用 "|"替代运算符进行 grepping

以下是名为AT5G60410.gff的大文件的示例:Chr5TAIR10gene2429489024301147.+.ID=AT5G60410;Note=protein_coding_gene;Name=AT5G60410Chr5TAIR10mRNA2429489024301147.+.ID=AT5G60410.1;Parent=AT5G60410;Name=AT5G60410.1;Index=1Chr5TAIR10protein2429522624300671.+.ID=AT5G60410.1-Protein;Name=AT5G60410.1;Derives_from=AT5G604

regex - 如何在 find 命令中使用正则表达式?

我有一些用生成的uuid1字符串命名的图像。例如81397018-b84a-11e0-9d2a-001b77dc0bed.jpg。我想使用“查找”命令找出所有这些图像:find.-regex"[a-f0-9\-]\{36\}\.jpg".但它不起作用。正则表达式有问题吗?有人可以帮我解决这个问题吗? 最佳答案 find.-regextypesed-regex".*/[a-f0-9\-]\{36\}\.jpg"请注意,您需要在开头指定.*/,因为find匹配整个路径。例子:susam@nifty:~/so$find.-name"*.j

java - 模式语法异常 : Illegal Repetition when using regex in Java

我不太了解正则表达式,但我需要匹配一个简单的模式。以下应返回true,Pattern.matches("{\"user_id\":[0-9]*}",inputLine)当inputLine为时{"user_id":34}但是,我遇到了这个异常:java.util.regex.PatternSyntaxException:Illegalrepetition{"user_id":24}atjava.util.regex.Pattern.error(UnknownSource)atjava.util.regex.Pattern.closure(UnknownSource)atjava.uti