例如,我有以下几行:
CCP2007
CCCP
CCCCPPPPCCC
CCCCCPPPPPCCCCC
我想显示第一个字母,因为该行中CCP2007
只有两个字母。C
它的命令是什么?
答案1
匹配以该行中CC
没有其他字符出现开头的行:C
grep '^CC[^C]*$' file
同样的事情,不要求CC
位于行的开头:
grep '^[^C]*CC[^C]*$' file
C
并且不考虑该行中的字符总数:
匹配以以下开头CC
但不以以下开头的行CCC
(例如,CCAC
匹配,CCCA
被丢弃):
grep '^CC[^C]' file
匹配任意位置重复最大和最小 2 的线C
:
grep -v 'CCC'| grep 'CC'
答案2
使用 GNU grep 的 PCRE 模式和 perl 风格环顾四周匹配CC
前面和后面都没有 的地方C
:
grep -P '(?<!C)CC(?!C)'
或者伪造与 ERE 模式类似的东西:
grep -E '(^|[^C])CC([^C]|$)'
答案3
为了找到确切包含的行