![如何使用正则表达式提取重叠的字符模式?](https://linux22.com/image/11905/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%8F%90%E5%8F%96%E9%87%8D%E5%8F%A0%E7%9A%84%E5%AD%97%E7%AC%A6%E6%A8%A1%E5%BC%8F%EF%BC%9F.png)
是否可以创建一个匹配重叠字符模式的正则表达式?
例如,我想匹配ABC,BCD,西德和定义从字符串abcdef。
如果不可能的话,你能用另外两种石器时代的工具做同样的事情吗? sed 和 awk?
答案1
如果你的意思是重复提取3个字符, 然后:
在旧的 sed 中:
$ sed ':1;h;s/\(...\).*/\1/p;g;s/.//;t1;d' <<<$'abcdef\n1234567\n'
abc
bcd
cde
def
123
234
345
456
567
在旧的 awk 中:
$ awk '{a=$0;for(i=1;i<length(a)-1;i++){print substr(a,i,3)}}' <<<$'abcdef\n1234567'
abc
bcd
cde
def
123
234
345
456
567