$ jq 'map_values(tostring)' file.json
{
"id": "1",
"customer": "user",
"plate": "BMT-216-A",
"country": "GB",
"amount": "1000",
"pndNumber": "20000",
"zoneNumber": "4"
}
Перенаправить на новый файл, а затем переместить его на исходное имя файла.
Для более тщательного преобразования чисел в не -плоских структурах в строки рассмотрим
jq '(..|select(type == "number")) |= tostring' file.json
Это будет рекурсивно проверять каждое значение в данном документе и выбирать те, которые являются числами. Затем выбранные значения преобразуются в строки. Строго говоря, он также будет смотреть на ключи, но, поскольку они не могут быть простыми числами в JSON, ключ не будет выбран.
Пример:
$ jq. file.json
{
"a": {
"b": 1
},
"b": null,
"c": [
1,
2,
"hello",
4
]
}
$ jq '(..|select(type == "number")) |= tostring' file.json
{
"a": {
"b": "1"
},
"b": null,
"c": [
"1",
"2",
"hello",
"4"
]
}
Чтобы дополнительно процитировать null
, замените select()
на
select(type == "number" or type == "null")
используйте параметр grep -f
для предоставления файла, содержащего шаблоны , поэтому вам вообще не нужно зацикливаться:
grep -i -f filelist.txt out.log > result.txt
Теперь у вас есть один вызов grep вместо одного на строку. Если out.log большой, ваш процессор будет вам благодарен.
Попытался использовать приведенный ниже скрипт, все работает нормально
for i in `cat filelist.txt`
do
for j in `cat out.log`
do
grep -i "$j" $i
done
done
filelist.txt.====> Consists of filenames
Ну... большинство ответов здесь верны, это моя беда, файл "filelist.txt" был сгенерирован из Excel и в Windows. Как только я конвертирую файл в формат unix. все работало.
Я усвоил очень -урок, отнявший много времени. Миллион благодарностей каждому ответившему на вопрос:)
Всем хорошего дня!