Regex EGREP命令,用于打印包含四个字母的子字符串的所有行
创建egrep命令时遇到问题,该命令会打印标准输入中包含四个字母的子字符串的所有行,这些字母会出现三次。例如 该行: 考虑一下这条线,单词side是一条边线 应打印,因为它包含子字符串“side”三次Regex EGREP命令,用于打印包含四个字母的子字符串的所有行,regex,unix,Regex,Unix,创建egrep命令时遇到问题,该命令会打印标准输入中包含四个字母的子字符串的所有行,这些字母会出现三次。例如 该行: 考虑一下这条线,单词side是一条边线 应打印,因为它包含子字符串“side”三次 到目前为止,我看到的是egrep([a-zA-Z]{4}),它只显示了字符串中四个连续字母的部分。我的目标是返回整行,而它包含“side”3次。我对正则表达式还是新手。有谁能解释一下我该如何修复这个表达式吗?看来您正在寻找 grep -E '([[:alpha:]]{4})(.*\1){2}' f
到目前为止,我看到的是egrep([a-zA-Z]{4}),它只显示了字符串中四个连续字母的部分。我的目标是返回整行,而它包含“side”3次。我对正则表达式还是新手。有谁能解释一下我该如何修复这个表达式吗?看来您正在寻找
grep -E '([[:alpha:]]{4})(.*\1){2}' file
请参阅和
表达式在右边找到四个连续的字母和该确切子字符串的两个重复,可以用任何0+字符分隔
详细信息
-捕获组#1:4(由于范围/间隔/限制量词([:alpha:]{4})
)个字母({4}
匹配任何字母)[:alpha:]
-两次重复:(.*\1){2}
-任何0+字符*
-捕获到组1中的值(=与\1
匹配的文本)[[:alpha:][4}
- 你是说
grep-E'([:alpha:]{4})(.*\1){2}'
?([:alpha:]{4})(.*\1){2}
在右边找到4个字母和这个精确子字符串的两个重复(它们可以用任何0+字符分隔)。啊,我明白了。是的,这就是我试图实现的,在单词“考虑”中是子字符串“side”,它在这个特定文件中也出现了两次。我已尝试此命令,但该命令不返回任何内容。据我所知,该命令正在查找由4个字母组成的一组,后跟该子字符串的2个重复,而不考虑中间的字符。如果这是真的,那么我不明白为什么命令不返回文件。