如何在grep中创建相同输出的类?

时间:2013-02-28 11:58:26

标签: linux unix grep

我试图找出几种语言中不同三种元音组合的数量。使用grep我在文本文件中出现了三个元音。这是我使用的代码:

'[aeuioj]{3}' *file name* -o 

我发现人们之前已经这样做了,请参阅下面的链接

How do I use egrep to list words that match a regular expression?

只有现在我需要过滤输出中的所有重复,这应该给我一个给定语言中所有三个元音组合的列表。我非常贪心。

谢谢,

STWS

1 个答案:

答案 0 :(得分:1)

您可以在此处使用grep + perl + uniq组合:

cat words.txt | grep -E '[aeiou]{3}' | perl -pe 's/(.*)([aeiou]{3})(.*)/$1$2$3 $2/' | uniq -f 1

它的作用是:

  1. Grep正在过滤,因此只显示包含3个相邻元音的单词
  2. Perl正在提取这3个元音并将它们放在一行的末尾(在一个空格之后)。例如:

    $ echo "gooad" | perl -pe 's/(.*)([aeiou]{3})(.*)/$1$2$3 $2/'
    goood ooa
    
  3. Uniq -f 1正在比较第二列(在空格之后)并且只选择唯一的行。