用于模式匹配的 sed 查询

用于模式匹配的 sed 查询

我的文件看起来像

cat new:

ALL          ALLOFTHEM    ALL1
OPS     BE2A    OPS1

 ABE    ABE     ABE1

下面的 sed 查询给出的结果为第一行 sed -n '/\([A-Z]\{1,\}\)\1/p' new

ALL          ALLOFTHEM    ALL1

我猜测第二行也会匹配,因为 OPS 的字符长度也大于 1。

有任何想法吗?

答案1

我猜测第二行也会匹配,因为 OPS 的字符长度也大于 1。

那么,您想匹配任何具有多个连续大写字母的行吗?如果是这样,请使用:

$ sed -n '/[A-Z]\{2,\}/p' new
ALL          ALLOFTHEM    ALL1
OPS     BE2A    OPS1
 ABE    ABE     ABE1


为什么你的表情不是这样的? 你的正则表达式是:

\([A-Z]\{1,\}\)\1

这分为两部分。第一个是\([A-Z]\{1,\}\)匹配一个或者更多大写字母。第二部分与\1前一组大写字母相匹配。这意味着必须重复大写字母模式(没有中间字符)才能匹配。这只匹配第一行,因为第一行有一个大写字母,L后面跟着一个大写字母L。这是唯一具有这种序列的线路。

相关内容