我想在多个文本文件 (*.txt) 中找出不包含字母“e”的 8 个字母单词的数量。在这个过程中我遇到了两个问题:我对量词的理解不够,以及如何排除字符。
我对 Unix 终端很陌生,但这是我尝试过的:
cat *.txt | grep -Eo "\w+" | grep -i ".*[^e].*"
我需要包含 cat 命令,否则它会包含管道中文本文件的名称。第二个管道是把所有的单词都放在一个列表中,它起作用了,但最后一个管道是为了找到所有没有字母“e”的单词,但似乎不起作用。 (我认为“.”表示没有或任何数量的任何字符,后跟一个不是“e”的字符,然后是另一个“.”表示没有或任何数量的任何字符。 )
cat *.txt | grep -Eo "\w+" | grep -wi "[a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]"
此命令可以找到包含 8 个字符的单词,但效果很差,因为我必须重复“[a-z]”8 次。我以为它也可以是“[a-z]{8}”,但这似乎不起作用。
cat *.txt | grep -Eo "\w+" | grep -wi "[a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]" | grep -i ".*[^e].*"
所以最后,这将是我最好的猜测,但是,第三个管道无效,最后一个管道不起作用。
最佳答案
你可以使用这个grep
:
grep -hEiwo '[a-df-z]{8}' *.txt
这里:
[a-df-z]{8}
:匹配除e
以外的所有字母
-h
:不在输出中打印文件名-i
:忽略大小写搜索-o
:仅打印匹配项-w
:匹配完整的单词
关于linux - 如何使用 grep 命令找到不包含字母 "e"的 8 个字母单词的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64927014/