Bash CLI удаляет цитаты из вывода команды

Я пытаюсь загрузить JSON-файл, используя jq здесь. Это довольно просто, и это работает:

$ cat ~/Downloads/json.txt | jq '.name' "web"

Однако мне нужно назначить вывод этой переменной команде. Я попытался сделать это, и это работает:

$ my_json=`cat ~/Downloads/json.txt | jq '.name'` $ myfile=~/Downloads/$my_json.txt $ echo $myfile /home/qut/Downloads/"web".txt

Но я хочу /home/qut/Downloads/web.txt.

Как удалить кавычки, т. Е. Изменить "web" на web?

2
задан 25 November 2017 в 08:21

30 ответов

Вы можете использовать команду tr для удаления кавычек:

my_json=$(cat ~/Downloads/json.txt | jq '.name' | tr -d \")
5
ответ дан 22 May 2018 в 15:55

Вы можете использовать команду tr для удаления кавычек:

my_json=$(cat ~/Downloads/json.txt | jq '.name' | tr -d \")
7
ответ дан 18 July 2018 в 02:38

Вы можете использовать команду tr для удаления кавычек:

my_json=$(cat ~/Downloads/json.txt | jq '.name' | tr -d \")
7
ответ дан 24 July 2018 в 17:37

Вы можете использовать команду tr , чтобы удалить кавычки:

my_json=$(cat ~/Downloads/json.txt | jq '.name' | tr -d \")
7
ответ дан 31 July 2018 в 20:41

Вы можете использовать команду tr , чтобы удалить кавычки:

my_json=$(cat ~/Downloads/json.txt | jq '.name' | tr -d \")
7
ответ дан 2 August 2018 в 13:46

Вы можете использовать команду tr , чтобы удалить кавычки:

my_json=$(cat ~/Downloads/json.txt | jq '.name' | tr -d \")
7
ответ дан 3 August 2018 в 17:57

Вы можете использовать команду tr , чтобы удалить кавычки:

my_json=$(cat ~/Downloads/json.txt | jq '.name' | tr -d \")
7
ответ дан 5 August 2018 в 03:06

Вы можете использовать команду tr , чтобы удалить кавычки:

my_json=$(cat ~/Downloads/json.txt | jq '.name' | tr -d \")
7
ответ дан 6 August 2018 в 19:57

Вы можете использовать команду tr , чтобы удалить кавычки:

my_json=$(cat ~/Downloads/json.txt | jq '.name' | tr -d \")
7
ответ дан 9 August 2018 в 00:24

Вы можете использовать команду tr , чтобы удалить кавычки:

my_json=$(cat ~/Downloads/json.txt | jq '.name' | tr -d \")
7
ответ дан 14 August 2018 в 18:33
  • 1
    Спасибо за команду tr ... Я просмотрел 4 разных сообщения с сотнями новичков с людьми, которые пишут 40-мегапиксельные персонажи, чтобы выполнить эту работу. У вас есть правильное (и, вероятно, современное) решение. – Shadoninja 11 June 2018 в 18:04

В конкретном случае jq вы можете указать, что вывод должен быть в необработанном формате:

   --raw-output / -r:

   With this option, if the filter´s result is a string then  it  will
   be  written directly to standard output rather than being formatted
   as a JSON string with quotes. This can be useful for making jq fil‐
   ters talk to non-JSON-based systems.

Чтобы проиллюстрировать использование файла json.txt с вашей ссылки: [!d2 ]

$ jq '.name' json.txt
"Google"

, тогда как

$ jq -r '.name' json.txt
Google
3
ответ дан 22 May 2018 в 15:55

Вы можете использовать eval echo следующим образом:

my_json=$(eval echo $(cat ~/Downloads/json.txt | jq '.name'))

, но это не идеально - может легко вызвать ошибки и / или недостатки безопасности.

1
ответ дан 22 May 2018 в 15:55

В конкретном случае jq вы можете указать, что вывод должен быть в необработанном формате:

--raw-output / -r: With this option, if the filter´s result is a string then it will be written directly to standard output rather than being formatted as a JSON string with quotes. This can be useful for making jq fil‐ ters talk to non-JSON-based systems.

Чтобы проиллюстрировать использование файла json.txt с вашей ссылки:

$ jq '.name' json.txt "Google"

, тогда как

$ jq -r '.name' json.txt Google
3
ответ дан 18 July 2018 в 02:38

Вы можете использовать eval echo следующим образом:

my_json=$(eval echo $(cat ~/Downloads/json.txt | jq '.name'))

, но это не идеально - может легко вызвать ошибки и / или недостатки безопасности.

1
ответ дан 18 July 2018 в 02:38

В конкретном случае jq вы можете указать, что вывод должен быть в необработанном формате:

--raw-output / -r: With this option, if the filter´s result is a string then it will be written directly to standard output rather than being formatted as a JSON string with quotes. This can be useful for making jq fil‐ ters talk to non-JSON-based systems.

Чтобы проиллюстрировать использование файла json.txt с вашей ссылки:

$ jq '.name' json.txt "Google"

, тогда как

$ jq -r '.name' json.txt Google
3
ответ дан 24 July 2018 в 17:37

Вы можете использовать eval echo следующим образом:

my_json=$(eval echo $(cat ~/Downloads/json.txt | jq '.name'))

, но это не идеально - может легко вызвать ошибки и / или недостатки безопасности.

1
ответ дан 24 July 2018 в 17:37

В конкретном случае jq вы можете указать, что вывод должен быть в формате raw :

   --raw-output / -r:

   With this option, if the filter´s result is a string then  it  will
   be  written directly to standard output rather than being formatted
   as a JSON string with quotes. This can be useful for making jq fil‐
   ters talk to non-JSON-based systems.

Чтобы проиллюстрировать использование файла json.txt из ваша ссылка :

$ jq '.name' json.txt
"Google"

, тогда как

$ jq -r '.name' json.txt
Google
3
ответ дан 31 July 2018 в 20:41

Вы можете использовать eval echo следующим образом:

my_json=$(eval echo $(cat ~/Downloads/json.txt | jq '.name'))

, но это не идеально - может легко вызвать ошибки и / или недостатки безопасности.

1
ответ дан 31 July 2018 в 20:41

В конкретном случае jq вы можете указать, что вывод должен быть в формате raw :

   --raw-output / -r:

   With this option, if the filter´s result is a string then  it  will
   be  written directly to standard output rather than being formatted
   as a JSON string with quotes. This can be useful for making jq fil‐
   ters talk to non-JSON-based systems.

Чтобы проиллюстрировать использование файла json.txt из ваша ссылка :

$ jq '.name' json.txt
"Google"

, тогда как

$ jq -r '.name' json.txt
Google
3
ответ дан 2 August 2018 в 13:46

Вы можете использовать eval echo следующим образом:

my_json=$(eval echo $(cat ~/Downloads/json.txt | jq '.name'))

, но это не идеально - может легко вызвать ошибки и / или недостатки безопасности.

1
ответ дан 2 August 2018 в 13:46

В конкретном случае jq вы можете указать, что вывод должен быть в формате raw :

   --raw-output / -r:

   With this option, if the filter´s result is a string then  it  will
   be  written directly to standard output rather than being formatted
   as a JSON string with quotes. This can be useful for making jq fil‐
   ters talk to non-JSON-based systems.

Чтобы проиллюстрировать использование файла json.txt из ваша ссылка :

$ jq '.name' json.txt
"Google"

, тогда как

$ jq -r '.name' json.txt
Google
3
ответ дан 3 August 2018 в 17:57

Вы можете использовать eval echo следующим образом:

my_json=$(eval echo $(cat ~/Downloads/json.txt | jq '.name'))

, но это не идеально - может легко вызвать ошибки и / или недостатки безопасности.

1
ответ дан 3 August 2018 в 17:57

В конкретном случае jq вы можете указать, что вывод должен быть в формате raw :

   --raw-output / -r:

   With this option, if the filter´s result is a string then  it  will
   be  written directly to standard output rather than being formatted
   as a JSON string with quotes. This can be useful for making jq fil‐
   ters talk to non-JSON-based systems.

Чтобы проиллюстрировать использование файла json.txt из ваша ссылка :

$ jq '.name' json.txt
"Google"

, тогда как

$ jq -r '.name' json.txt
Google
3
ответ дан 5 August 2018 в 03:06

Вы можете использовать eval echo следующим образом:

my_json=$(eval echo $(cat ~/Downloads/json.txt | jq '.name'))

, но это не идеально - может легко вызвать ошибки и / или недостатки безопасности.

1
ответ дан 5 August 2018 в 03:06

В конкретном случае jq вы можете указать, что вывод должен быть в формате raw :

   --raw-output / -r:

   With this option, if the filter´s result is a string then  it  will
   be  written directly to standard output rather than being formatted
   as a JSON string with quotes. This can be useful for making jq fil‐
   ters talk to non-JSON-based systems.

Чтобы проиллюстрировать использование файла json.txt из ваша ссылка :

$ jq '.name' json.txt
"Google"

, тогда как

$ jq -r '.name' json.txt
Google
3
ответ дан 6 August 2018 в 19:57

Вы можете использовать eval echo следующим образом:

my_json=$(eval echo $(cat ~/Downloads/json.txt | jq '.name'))

, но это не идеально - может легко вызвать ошибки и / или недостатки безопасности.

1
ответ дан 6 August 2018 в 19:57

В конкретном случае jq вы можете указать, что вывод должен быть в формате raw :

   --raw-output / -r:

   With this option, if the filter´s result is a string then  it  will
   be  written directly to standard output rather than being formatted
   as a JSON string with quotes. This can be useful for making jq fil‐
   ters talk to non-JSON-based systems.

Чтобы проиллюстрировать использование файла json.txt из ваша ссылка :

$ jq '.name' json.txt
"Google"

, тогда как

$ jq -r '.name' json.txt
Google
3
ответ дан 9 August 2018 в 00:24

Вы можете использовать eval echo следующим образом:

my_json=$(eval echo $(cat ~/Downloads/json.txt | jq '.name'))

, но это не идеально - может легко вызвать ошибки и / или недостатки безопасности.

1
ответ дан 9 August 2018 в 00:24

В конкретном случае jq вы можете указать, что вывод должен быть в формате raw :

   --raw-output / -r:

   With this option, if the filter´s result is a string then  it  will
   be  written directly to standard output rather than being formatted
   as a JSON string with quotes. This can be useful for making jq fil‐
   ters talk to non-JSON-based systems.

Чтобы проиллюстрировать использование файла json.txt из ваша ссылка :

$ jq '.name' json.txt
"Google"

, тогда как

$ jq -r '.name' json.txt
Google
3
ответ дан 14 August 2018 в 18:33

Вы можете использовать eval echo следующим образом:

my_json=$(eval echo $(cat ~/Downloads/json.txt | jq '.name'))

, но это не идеально - может легко вызвать ошибки и / или недостатки безопасности.

1
ответ дан 14 August 2018 в 18:33

Другие вопросы по тегам:

Похожие вопросы: