我正在尝试编写一个grep(或egrep)命令,该命令将在" words.txt"中查找并打印任何行,该行包含相同的下案字母,三次。字母的三个出现可能会连续出现(如" mooo")或被一个或多个空间(如" x x x"中)隔开,但不会被任何其他字符隔开。
words.txt包含:
The monster said "grrr"!
He lived in an igloo only in the winter.
He looked like an aardvark.
这是我认为命令的样子:
grep -E 'b[^ ]*[[:alpha:]]{3}[^ ]*b' 'words.txt'
尽管我知道这是错误的,但是我对语法不足以弄清楚。使用GREP,有人可以帮我吗?
此功能适合您?
grep '([[:lower:]]) *1 *1'
它采用小写字符[[:lower:]]
并记住它( ... )
。它试图匹配任何数量的空间_*
(包括0),记住字符1
,任何数量的空格,记忆字符。就是这样。
您可以尝试使用--color=auto
运行它,以查看其匹配的输入的哪些部分。
尝试一下。请注意,这将不匹配" mooo",因为" b
"一词发生在" m"。
grep -E 'b([[:alpha:]]) *1 *1 *b' words.txt
[:alpha:]
是字符类的表达式。要用作正则char集,它需要额外的括号。您可能已经知道了这一点,因为看起来您开始这样做,但是将开放式括号未锁定。