sotvm
@sotvm
Умный поймёт, а дураку и так всё равно.

Как убрать спецсимволы из строки в запросе к API гуглопереводчика?

Есть скрипт - отправляет выделеное гуглу, ответ выводит через notify-send и/или ... (не суть важно)
не работает с многострочным текстом когда выделяю в терминале ,переводит только одну строку

пробовал добавлять в конвеер такие команды - не помогает . ЧЯДНТ ?
tr '\n' ' ' | tr '\r' ' ' | tr '\t' ' ' | tr '\v' ' '
sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/ /g'

#!/bin/bash
TRANS="$(wget -U "Mozilla/5.0" -qO - "http://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=ru&dt=t&q=$(xsel -o | sed "s/[\"'<>]//g" | tr '\n' ' ' | tr '\r' ' ' | tr '\t' ' ' | tr '\v' ' '  | sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/ /g' | sed "s/,,,0]],,.*//g" )"  |  awk -F'"' '{print $2}')"

if [ "$?" -eq 0 ]; then
xcowsay -t 0 "$TRANS"
#notify-send "Перевод" "$TRANS"
#echo  "$TRANS" >> translate.txt
fi
  • Вопрос задан
  • 218 просмотров
Пригласить эксперта
Ответы на вопрос 2
xotkot
@xotkot
хорошо есть и хорошо весьма
можно проще, используя ключ data-urlencode в curl:
$ Q='Hello world.
\`quote> Hi'
$ echo $Q
Hello world.
Hi
$ curl -s -H "user-agent: Mozilla/5.0" --get "https://translate.googleapis.com/translate_a/single?client=gtx&dt=t&sl=en&tl=ru" --data-urlencode "q=$Q"
[[["Привет мир.\n","Hello world.\n",null,null,1],["Здравствуй","Hi",null,null,1]],null,"en"]
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега bash
software engineer
Подозреваю, что проблема в xsel -o
Возможно он каждую строку отправляет как отдельный объект.
Попробуйте сперва получить отправляемый текст в переменную и посмотреть что в ней.
Если вместо xcel -o подставить многострочный текст, все работает
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы