dummy.txt包含:
gflkgWXYZ_123jfdknABC_8723879bfdkh873ABC_456jhb gflkUI_12643jfdknABC_bfdk873WXYZ_7848jhb ABC_1121fABC_22462 WXYZ_33273 3ABC_888
我试图匹配所有这些WXYZ_(可选数字),即WXYZ_23和ABC_(可选数字)。 即ABC_
什么Perl脚本(我在没有GNU的solaris上运行)将允许我生成以下输出文件?
WXYZ_123 ABC_8723879 ABC_456 ABC_ WXYZ_7848 ABC_1121 ABC_22462 WXYZ_33273 ABC_888
从bash中的string中删除所有特殊字符和大小写
当Gcc编译Boost :: regex和多个版本的boost时,未定义的引用存在
std :: regex_replace给了我意想不到的结果
使用参数redirect到主页url
如何在Windows命令提示符下使用单一命令获取java版本?
有没有一个基于GNU Windows的文本编辑器,使用完整的正则expression式与伟大的文档查找replace?
奇怪的bug – std :: regex只匹配前两个string
Bash脚本打印模式1,从模式2到模式3search并打印所有行,并打印模式4
使用这个正则表达式((ABC)|(WXYZ))_d*
单程:
perl -ne ' push @list,$1 while m/((?:WXYZ|ABC)_d*)/g; END { printf qq|%sn|,join qq|n|,@list; } ' infile
输出:
WXYZ_123 ABC_8723879 ABC_456 ABC_ WXYZ_7848 ABC_1121 ABC_22462 WXYZ_33273 ABC_888
它需要成为Perl吗?
egrep -o '(WXYZ|ABC)_[0-9]*' dummy.txt
burning_LEGION是正确的,但是在非捕获括号内进行交替操作更容易。 你也必须以某种方式收集结果。 假设你只想要ABC_或WXYZ_而不是别的,试试这个简短的程序:
#!/usr/bin/env perl use warnings; use strict; my @matches; open(FILE,'<',"dummy.txt") or die "Failed to open dummy.txt - $!n"; foreach (<FILE>) { 1 while /((?:ABC|WXYZ)_d*)/g && push(@matches,$1); } close(FILE) or die "Failed to close dummy.txt - $!n"; open(OUTPUT,'>',"output.txt") or die "Failed to open output.txt - $!n"; print OUTPUT join("n",@matches); close(OUTPUT) or die "Failed to close output.txt - $!n"; exit 0;
$ cat output.txt
WXYZ_123
ABC_8723879
ABC_456
ABC_
WXYZ_7848
ABC_1121
ABC_22462
WXYZ_33273
ABC_888
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。