如何通过sed命令判断回文字符串


linux下如何通过sed命令判断回文字符串?
如:abba,level

sed shell

飞翼浮游炮 12 years ago
  1. echo "abba" | sed -n '/\(.\)\(.\)\2\1/' p 可以判断长度为4的字符是否为回文
  2. echo "level" | sed -n '/\(.\)\(.\)\(.\)\2\1' p 可以判断长度为5的字符是否为回文

我稍微解释下,"\(.\)"代表了任意一个字符,"\("是对"("进行了转义,sed需要"\2"表示是对刚才匹配到的字符的反向引用,就好比是一个变量。\1就是反向引用第一个匹配到的,\2就是反向引用第2个匹配到的。

如果需要判断的字符数为偶数,比如为4个,则"\(.\)"就有2个,反向引用就是\2和\1;如果需要判断的字符数为奇数个,比如为5个,则"\(.\)"就有3个,反向引用就是\2和\1,中间的那个就不需要反向引用了,也就是\3没有必要判断。我们可以看到这个"\(.\)"的个数是和字符数的长度有关。

可见:http://www.groad.net/bbs/simple/?t6847.html

矿泉水兑女未水 answered 12 years ago

Your Answer