在 Solaris 上使用替代方法的 sed 正则表达式不起作用
sed regex with alternative on Solaris doesn't work
目前我正在尝试在 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
还有其他方法可以使用alternative吗?在perl中有可能吗?
感谢您提供任何解决方案。
使用 Perl
perl -ne 'print if /^(a_)?[a-zA-Z0-9]*$/' input.txt
(a_)?
匹配 a_
一次或零次,因此可选。它可能存在也可能不存在。
(a_)
也捕获匹配,什么都不需要。所以你可以使用 (?:a_)?
代替。 ?:
使 ()
仅对内部内容进行分组(因此 ?
适用于整个事物),但不记得它。
和grep
$ grep -xiE '(a_)?[a-z0-9]*' ip.txt
grtad
a_pitr
baman
12353
ai345
-x
匹配整行
-i
忽略大小写
-E
扩展正则表达式,如果不可用,请使用 grep -xi '\(a_\)\?[a-z0-9]*'
(a_)?
零次或一次匹配 a_
[a-z0-9]*
零个或多个字母或数字
随着 sed
sed -nE '/^(a_)?[a-zA-Z0-9]*$/p' ip.txt
或者,使用 GNU sed
sed -nE '/^(a_)?[a-z0-9]*$/Ip' ip.txt
目前我正在尝试在 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
还有其他方法可以使用alternative吗?在perl中有可能吗? 感谢您提供任何解决方案。
使用 Perl
perl -ne 'print if /^(a_)?[a-zA-Z0-9]*$/' input.txt
(a_)?
匹配 a_
一次或零次,因此可选。它可能存在也可能不存在。
(a_)
也捕获匹配,什么都不需要。所以你可以使用 (?:a_)?
代替。 ?:
使 ()
仅对内部内容进行分组(因此 ?
适用于整个事物),但不记得它。
和grep
$ grep -xiE '(a_)?[a-z0-9]*' ip.txt
grtad
a_pitr
baman
12353
ai345
-x
匹配整行-i
忽略大小写-E
扩展正则表达式,如果不可用,请使用grep -xi '\(a_\)\?[a-z0-9]*'
(a_)?
零次或一次匹配a_
[a-z0-9]*
零个或多个字母或数字
随着 sed
sed -nE '/^(a_)?[a-zA-Z0-9]*$/p' ip.txt
或者,使用 GNU sed
sed -nE '/^(a_)?[a-z0-9]*$/Ip' ip.txt