我有一个分配,我必须向文件发送一个无限的参数列表,该文件必须打印以下列方式重复的字符串:
... NumNumNumCharCharChar
以下三个数字相同,以及三个下一个字符,然后是另外三个数字,然后是另外三个字符。 字符串必须以数字开头,并以重复的方式结束字符。
为了解决这个问题,您可以只使用 <{em> grep
/ egrep
- 这取决于您,这意味着解决方案是正则表达式。
好的,这就是我想为egrep做的事情:
egrep "^([0-9][0-9][0-9][a-b][a-b][a-b])\1*$"
答案 0 :(得分:0)
你的尝试几乎是正确的。反向引用\1
将需要重复匹配的字符串,而不是匹配的模式。允许模式重复。在重复内部,您确实需要反向引用:
egrep '^(([0-9])\2{2}([a-z])\3{2})+$' file
作为shell脚本调整,我切换到单引号(双引号不太安全),我将小写类扩展为[a-z]
。请注意,外括号是第1组,因此内部带括号的表达式的反向引用将为\2
和\3
。