【发布时间】:2021-09-08 09:38:00
【问题描述】:
我有一个文件,其中包含一组几千个独特的单词/术语。 它看起来像:
high school teacher
high school student
library
pencil stand
college professor
college graduate
我需要所有重复模式的列表,所以在这种情况下,我需要以下结果:
high
school
high school
college
在 unix/vim 中有什么方法可以实现吗?
要求的补充说明:
问。重复必须在一行上,还是可以分成几行?
- 理想情况下,每个模式都应该在一个新行中
问。模式是否都是单词序列(一个或多个单词)
- 是的,它们都是单词序列
问。一行内的间距重要吗?大写?标点符号?
- 空格和标点符号都算作模式的一部分。我们可以忽略大小写
即。
-
School==School!=school -
this pat.tern==this pat.tern!=this pattern
【问题讨论】:
-
再次-请edit您的问题表明您尝试自己解决问题,以便我们可以最好地帮助您。
-
@EdMorton 我实际上完全不知道从哪里开始尝试解决它。没有很好的解决方案来查找一行中的重复模式。我所能做的就是确保每一行都是独一无二的
-
为什么需要
high和high school作为重复模式而不需要school?重复必须在一行上,还是可以分成几行?模式都是单词序列(一个或多个单词)吗? “词”的定义是什么?一行内的间距重要吗?大写?标点符号? -
@JonathanLeffler 感谢您的反馈,已编辑问题以更好地详细说明要求(另外,您是对的......
school也是重复模式) -
我认为
awk可能是完成这项工作的最佳工具,除非您转向 Python 或 Perl 或其他脚本语言之一。