У меня есть массивный 20-гигабайтный файл JSON с записями недвижимости.
пример фрагмента
{"id":2545,"name":"No cribs (infant beds) available"},{"description": "Here is some text with a <a href=\"stupidurl.com\">click here</a>"}
Я пытаюсь использовать цикл WHILE в bash для чтения файла построчно и извлечениятолько данные, которые я хочу, в новый, меньший файл для последующей обработки.
while read line; do
#All this If Statement does is look for a pattern to identify the line I want to save
if [[ ($line == *"\"country_code\":\"US\","* ]]; then
echo $line >> $JSON_FILE_FILTERED
fi
done < $JSON_FILE
Мои проблемы заключаются в том, что оператор echo удаляет экранированные кавычки.
href=\"mylink\"
становится ...
href="mylink"
... в новом файле JSON, что вызывает ошибки синтаксического анализа JQ.
Мне нужно либо удалить двойные кавычки в скобках JSON, либо изобразить оператор echo, чтобы сохранить экранированные кавычки при их записи в новый текстовый файл.
Я пробовал различные итерацииsed, tr и др. echo -e и printf. В основном мне не повезло.
Прямо сейчас я могу удалить все теги между ними с помощью ...
echo $line | sed -e 's/<[^>]*>//g' >> $JSON_FILE_FILTERED
..., что несколько работает, но не исправляет другие двойные кавычки в скобках данных
{"description": "Here is some text with \"Some Big Guy's\" hat"}
{"description": "Here is some text with "Some Big Guy's" hat"}