【发布时间】:2014-07-05 00:40:00
【问题描述】:
所以,我是从命令行操作数据的新手,也是正则表达式的初学者。
我在多个子目录中有多个 .txt 文件。我想要做的是找到所有具有一定数量连续辅音的单词。
到目前为止我尝试过的是这样的:
find . | grep -orhn '[bdfghjklmnprstvxzþ]\{2\}' > ../words.txt
只打印出类似的东西:
2:rt
2:gr
2:xl
3:gr
3:st
3:kk
我想得到整个单词,而不仅仅是两个连续的辅音(以及数字和冒号。我不知道它是从哪里来的,因为它不在原始数据中,但它真的不重要)我正在尝试)。
你有小费吗?
【问题讨论】:
-
因为字符类它只匹配两个字符。为什么在字符课后面加
{2}? -
试试
grep -rP "bdfghjklmnprstvxzþ" * -
因为我试图找到所有带有两个连续辅音的单词。如果我删除它,我会得到所有文件中的所有辅音,但如果我将它更改为 {3},我会在这个特定目录(和子目录)的所有文件中得到所有辅音的三元组。我只是不明白整个词,这就是我想做的。如果 {2} 意味着它只会输出这对,而不是别的,我将不得不找到另一种方法来做到这一点。有什么想法吗?我尝试了 Perl 正则表达式。我也不会这样做。
-
我忘了提到,如果我删除 -o 标志,命令会输出整行或整个文件(此时不确定),其中包括具有 2 个连续辅音的单词。
-
是的,没有 -o 标志,它会打印整行。你弄明白了吗?
标签: regex text terminal command-line-arguments