doe*_*247 2 unix linux bash grep wc
我想在多个文本文件 (*.txt) 中找到不包含字母“e”的 8 个字母单词的数量。在这个过程中,我遇到了两个问题:我对量词缺乏理解以及如何排除字符。
我对 Unix 终端很陌生,但这是我尝试过的:
cat *.txt | grep -Eo "\w+" | grep -i ".*[^e].*"
Run Code Online (Sandbox Code Playgroud)
我需要包含 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]"
Run Code Online (Sandbox Code Playgroud)
这个命令可以找到包含 8 个字符的单词,但它非常无效,因为我必须重复 "[az]" 8 次。我认为它也可能是“[az]{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].*"
Run Code Online (Sandbox Code Playgroud)
所以最后,这将是我最好的猜测,但是,第三个管道无效,最后一个管道不起作用。
你可以使用这个grep:
grep -hEiwo '[a-df-z]{8}' *.txt
Run Code Online (Sandbox Code Playgroud)
这里:
[a-df-z]{8}: 匹配所有字母,除了 e-h: 不要在输出中打印文件名-i: 忽略大小写搜索-o:只打印匹配-w: 匹配完整的单词| 归档时间: |
|
| 查看次数: |
94 次 |
| 最近记录: |