Строка палиндром

Возможно ли проверить является ли строка палиндромом в bash в одну строку?


Ответы (3 шт):

Автор решения: greg zakharov

Например:

(x=$(sed 's/[^[:alpha:]]//g;s/.*/\L&/' <<< 'Аргентина манит всех!');[ "$(rev <<< $x)"="$x" ]&&echo true||echo false)

Можно одним awk'ом обойтись, все зависит от конечной цели.

→ Ссылка
Автор решения: aleksandr barakin

да, в принципе, любую программу для интерпретатора bash (в реализации от проекта gnu) можно при желании записать в одну строку.

например:

$ s="Аргентина манит негра!"
$ s1=${s,,};s2=${s1//[^[:alpha:].-]/};s3="";for((i=0;i<${#s2};i++));do s3="$s3${s2:~i:1}";done;[ "$s2" = "$s3" ] && echo "палиндром" || echo "нет"
палиндром
→ Ссылка
Автор решения: Oxyd

Ну так как не было ограничений на палиндром, то пусть будет кусочек AbAcAbA...

echo "Abacaba d abacaba e abacaba d abac aba"|tr -d " "|tr "[:upper:]" "[:lower:]"|xargs -i sh -c '[ $(rev <<<{}) = {} ]&&echo Ok||echo Bad'

Русского языка не дам ;-) ибо tr так и не пофиксили на работу с юникодом. 12 лет прошло... :-(

→ Ссылка