使用sed查找没有循环的回文

Find palindrome without loops using sed

我想确定一个字符串是否为回文。
假设我有这样的文件:
abcccba
abccccccccccccccccccccccba

alfabetaalfa

我想检查这个文件的每一行并说 "PALINDROME" 每一行都是回文。问题是我不能使用像 ([0-9])([0-9])/2/1 这样的匹配,因为我不知道这个词有多长。我认为我应该以某种方式进行模式缓冲。

搜索计算器以找到一些提示,我发现了这个: sed -r 'h;s/[^[:alpha:]]//g;H;x;s/\n/&&/;ta;:a;s/\n(.<em>)\n(.)/\n\n/;ta;G;/\n(.</em>)\n\n$/I;d' $1

问题是它不能完全正常工作,我不知道如何使用它来打印特定的单词,例如 "PALINDROME" 或 "NOT A PALINDROME".

非常感谢您的帮助。

编辑:当然 "not using loops" 我指的是普通循环。跳转到标签没问题。

你不必使用 sed:

xxx="rrrtttrrr"

if [ $xxx == `echo $xxx| rev` ]; then
    echo "PALINDROME"
else
    echo "NOT A PALINDROME"
fi

可以找到 Sed 版本 here:

#! /bin/sed -f
# Laurent Le Brun <laurent [at] le-brun.eu> - 2007

:loop
s/^\(.\)\(.*\)$//
t loop
/...*/ {
    i\
 no
    b end
}  
i\
 yes

:end
d