2017-02-02 18 views
0

У меня есть следующая строка:Как заменить одиночные кавычки на двойные кавычки в bash?

{"name":"ram","details":[{'subjects':{'service_location':'c:/A.exe','url':'http://A.zip'}}]} 

В строке выше несколько строк имеют одиночные кавычки вокруг них. так, как я могу заменить одиночные кавычки двойные кавычки в строке выше и получить следующим образом:

{"name":"ram","details":[{"subjects":{"service_location":"c:/A.exe","url":"http://A.zip"}}]} 
+0

Вопрос рядом, _why_ ты делая это? Вы предполагаете исправить «JSON» программно? и вы ищете быстрый грязный способ с помощью инструментов текстового процессора? – Inian

+1

Вы должны предположить, что ни одна из одинарных кавычек в строке не является * частью * значения, например '{" name ":" Jake 'The Snake' Jones "," name ": 'Bob'}'; в противном случае вы вообще не сможете сказать (без более сложного парсера), какие одиночные кавычки заменить. – chepner

ответ

1

Продление @ RavinderSingh13 ответ, используйте следующие команды для преобразования строки ,

echo '{"name":"ram","details":'"[{'subjects':{'service_location':'c:/A.exe','url':'http://A.zip'}}]}" | sed "s/'/\"/g" 
0

После преобразует все одиночные кавычки в двойные кавычки. Это использовало функцию awk в функции gsub для поиска и замены текста. Здесь мы говорим awk о замене s, который равен одинарным кавычкам. После того, как найдена одиночная кавычка, замените ее двойной кавычкой. 1 - распечатать строку.

awk -v s="'" '{gsub(s,"\"")}1' file 

ИЛИ

source-of-json | awk -v s="'" '{gsub(s,"\"")}1' 
+0

Можете ли вы подробнее рассказать о том, как я буду использовать выше в моем контексте и эхо-результирующую строку – Learner

2

@Learner: Попробуйте sed решение:

sed "s/'/\"/g" Input_file 

ИЛИ

your_command | sed "s/'/\"/g" 
1

С tr переводить отдельные символы:

your_command | tr "'" '"' 

Или, если это слишком много, набрав:

your_command | tr \' \" 

:-)

+0

вместо your_command я добавлю полную строку? – Learner

+0

Поместите все, что вы использовали для генерации данных вместо 'your_command', или используйте' tr \ '\ "<<<" $ your_variable ", если у вас есть это в переменной. –

Смежные вопросы