如何从ubuntu的文本文件生成(唯一)单词列表?

我有一个ASCII文本文件。 我想使用一个或多个Ubuntu命令从该文件生成所有“单词”列表。 一个字被定义为分隔符之间的字母序列。 分隔符默认情况下是空格,但我也想尝试其他字符,如标点符号等。换句话说,我想能够指定一个分隔符字符集。 我怎样才能生成一组独特的单词? 如果我还想只列出那些长度至less为N个字符的单词呢?

你可以使用grep:

-E'\ w +'搜索单词-o只打印符合%cat temp的行部分一些例子使用“快速的棕色狐狸跳过懒狗”,而不是“Lorem ipsum dolor sit amet,consectetur adipiscing elit “例如文字。

如果你不在乎是否重复单词

% grep -o -E '\w+' temp Some examples use The quick brown fox jumped over the lazy dog rather than Lorem ipsum dolor sit amet consectetur adipiscing elit for example text 

如果你只想打印每个单词,不管情况如何,你可以使用排序

-u仅打印每个单词一次-f在比较单词时告诉排序忽略大小写

如果你只想要每个单词一次

 % grep -o -E '\w+' temp | sort -u -f adipiscing amet brown consectetur dog dolor elit example examples for fox ipsum jumped lazy Lorem over quick rather sit Some text than The use 

你也可以使用tr命令

 echo the quick brown fox jumped over the lazydog | tr -cs 'a-zA-Z0-9' '\n' the quick brown fox jumped over the lazydog 

-c是指定字符的补充。 -s挤出替代品的重复; 'a-zA-Z0-9'是一组字母数字,如果你在这里添加一个字符,输入将不会在那个字符上被分隔(见下面的另一个例子)。 '\ n'是替换字符(换行符)。

 echo the quick brown fox jumped over the lazy-dog | tr -cs 'a-zA-Z0-9-' '\n' the quick brown fox jumped over the lazy-dog 

当我们在非分隔符列表中添加“ – ”时,懒狗被打印出来。 其他的输出是

 echo the quick brown fox jumped over the lazy-dog | tr -cs 'a-zA-Z0-9' '\n' the quick brown fox jumped over the lazy dog 

tr的摘要:任何不在-c参数中的字符将作为分隔符。 我希望这也解决了你的分隔符问题。

这应该为你工作:

 tr \ \\t\\v\\f\\r \\n | | tr -s \\n | tr -dc a-zA-Z0-9\\n | LC_ALL=C sort | uniq 

如果你想要至少五个字符的字符,请通过grep .....输出tr 。 如果你想不区分大小写,那么在sort之前,将tr AZ az粘贴到管道中。

请注意LC_ALL=C是需要sort才能正常工作。

我建议阅读你不明白的蚂蚁命令的man页。