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

时间:2015-11-01 10:57:31

标签: bash unix sed palindrome

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

alfabetaalfa

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

搜索stackoverflow找到一些提示,我发现了这个: sed -r #app/views/ajaxxxes/create.js.erb <% if @ajaxxx.title %> console.log("Ajaxxx created!"); $("#data-list").html("<%=j render 'data', locals: {ajaxxxes: @ajaxxxes} %>"); <% else %> console.log("Failed"); <% end %> #app/controllers/ajaxxxes_controller.rb class AjaxxxesController < ApplicationController def create @ajaxxxes = Ajaxxx.all ... end end #app/views/ajaxxxes/_data.html.erb <tbody> <% ajaxxxes.each do |ajaxxx| %> <tr> <td><%= ajaxxx.title %></td> <td><%= ajaxxx.description %></td> <td><%= link_to 'Show', ajaxxx %></td> <td><%= link_to 'Edit', edit_ajaxxx_path(ajaxxx) %></td> <td><%= link_to 'Destroy', ajaxxx, method: :delete, data: { confirm: 'Are you sure?' } %></td> </tr> <% end %> </tbody>

问题是它没有完全正常工作,我不知道如何使用它来打印像“PALINDROME”或“不是PALINDROME”这样的特定单词。

非常感谢您的帮助。

编辑:当然,“不使用循环”是指常见的循环。跳转到标签是可以的。

1 个答案:

答案 0 :(得分:2)

您不必使用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/^\(.\)\(.*\)\1$/\2/
t loop
/...*/ {
    i\
 no
    b end
}  
i\
 yes

:end
d