设计一个正则表达式,打印出以相同的3个字母开头和结尾的单词列表。例如: mic rocos mic , ent rancem ent 等等。我需要在unix中使用它。
答案 0 :(得分:1)
这是你的第一篇文章....你可以使用grep
(GNU grep 2.16)
grep -E "^(.{3}).*\1$" file.txt
输入file.txt
microcosmic hello entrancement world
你明白了,
microcosmic entrancement
<强>解释强>
修改强>
如果,您在文本中查找以相同的3个字母开头和结尾的每个单词
echo "microcosmic gshgshi entrancement hello world" |
grep -E -o "\b(.{3})\S*\1\b"
你明白了,
microcosmic entrancement
重要提示
abc
或ababa
之类的词语不起作用,在这种情况下,您可以使用awk
而不使用正则表达式
echo "microcosmic gshgshi entrancement hello world abc ababa" |
awk 'length($0)<3{next;}
substr($0,1,3) == substr($0,length($0)-2,3)' RS="[ \n\t]+"
你明白了,
microcosmic entrancement abc ababa