regex - sed 正则表达式及其替代方案在 Solaris 上不起作用

标签 regex bash perl sed solaris

目前我正在尝试在 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/

相关文章:

javascript - 如何使用正则表达式将一个或多个大写字母用逗号分隔?

python - 使用正则表达式选择数据

perl - Strawberry Perl v5.30.0 无法安装 Tcl (Windows 10)

linux - 运行两个命令的 BASH 脚本

windows - 在 Perl 脚本中播放声音

python - 填满磁盘空间最快的方法是什么

regex - 使用正则表达式告诉 csplit 在何处拆分文件

java - 正则表达式用空格替换所有数字和特殊字符?

linux - 使用 bash move 多个序列文件

html - Bash 字符串格式化