Как удалить \ n и \ r из строки JSON, используя Bash? - PullRequest
0 голосов
/ 21 февраля 2019

Я пытался удалить индикаторы новой строки и возврата каретки из моего вывода JSON, используя этот ответ .

Я также пытался запустить это на основе другого ответа I 'Вы видели в переполнении стека, но он все еще не работает:

 sed -E ':a;N;$!ba;s/\r{0,1}\n/\\n/g' text.json > text_clean.json

Мой текущий скрипт .sh выглядит так:

getPage() {
curl --fail -X GET 'https://api.test.com/v1/marx?page=1&pageSize=1000&sort=desc' \
  -H 'Authorization: Bearer xxxxxxx' \
  -H 'cache-control: no-cache'  
}

getPage \
| jq -c '.data[]' \
  > text.json

Чего мне здесь не хватает?

Если это помогает, пример строки, содержащей ее, принимает в выводе много разных форм, но вот хороший:

Ok! Thank you so much.\r\nBest,\r\nClaire\r\n\r\n

Ответы [ 3 ]

0 голосов
/ 23 февраля 2019

Если вы хотите изменить JSON, сделайте это в jq.

В этом случае это может означать изменение:

getPage \
| jq -c '.data[]' \
> text.json

...к ...

getPage \
| jq -c '.data[] | sub("\r\n"; " ") | sub("\n"; " ")' \
> text.json
0 голосов
/ 15 апреля 2019

Я бы использовал для этого tr.

В вашем примере попробуйте следующее:

 echo "Ok! Thank you so much.\r\nBest,\r\nClaire\r\n\r\n"| tr -d '\012\015'
0 голосов
/ 23 февраля 2019

Вы можете удалить символы с помощью perl, если они установлены:

echo "Ok! Thank you so much.\r\nBest,\r\nClaire\r\n\r\n" | perl -pe 's/\r\n//g'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...