目前我正在尝试在 Solaris 上将 sed 与正则表达式一起使用,但它不起作用。 我只需要显示与我的正则表达式匹配的行。
sed -n -E '/^[a-zA-Z0-9]*$|^a_[a-zA-Z0-9]*$/p'
输入文件:
grtad
a_pitr
_aupa
a__as
baman
12353
ai345
ki_ag
-MXx2
!!!23
+_)@*
我只想显示与上述正则表达式匹配的行:
grtad
a_pitr
baman
12353
ai345
还有其他方法可以使用替代方法吗?在perl中可以吗? 感谢您提供任何解决方案。
最佳答案
使用 Perl
perl -ne 'print if /^(a_)?[a-zA-Z0-9]*$/' input.txt
(a_)?
匹配 a_
一次或零次,因此可选。它可能存在也可能不存在。
(a_)
还捕获匹配,但不需要。因此您可以使用 (?:a_)?
代替。 ?:
使 ()
仅对内部内容进行分组(因此 ?
适用于整个事物),但不记得它。
关于regex - sed 正则表达式及其替代方案在 Solaris 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40202020/