Строка палиндром
Возможно ли проверить является ли строка палиндромом в 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 лет прошло... :-(