Проще всего было бы создать неправильное имя файла и правильное имя файла в той же среде, где произошел сбой, а затем просто переместить/переименовать папки с правильными именами.
Во избежание конфликтов между существующими именами лучше использовать другую папку назначения.
./saveLocationA/wrongname1 ->./saveLocationB/correctname1
./saveLocationA/wrongname2 ->./saveLocationB/correctname2
./saveLocationA/wrongname3 ->./saveLocationB/correctname3
Если возможно, я бы предпочел исправить скрипт и просто запустить его снова; исправление некоторых странных ошибок после вскрытия, вероятно, стоит дороже и может привести к новым проблемам.
Удачи!
Пустая строка по-прежнему является строкой, поэтому .abc_severity?
даст вам пустую строку, а неnull
(илиfalse
). Также обратите внимание, что вопросительный знак примерно означает «заменить на null
, если этот ключ не существует». В примере все три ключа существуют, и их значения не равны null
.
Если бы вы использовали null
для пустых значений, ваше выражение jq
выглядело бы как
.Severity = (.abc_severity //.def_severity //.ghi_severity )
Приведенное выше выражение выбрало бы первое из трех значений, которые не были null
, проверяя левое -самое первое и идущее вправо, или null
, если бы все они были null
. Но сейчас это не сработает, поскольку нам приходится иметь дело с пустыми строками так, как если бы они были null
.
Мы можем сделать это, введя вспомогательную функцию (, чтобы немного сократить объем набора текста):
def n: if. == "" then null else. end;
.Severity = ((.abc_severity|n) // (.def_severity|n) // (.ghi_severity|n) // "")
Наша вспомогательная функция n
возвращает строку как -, если она не пуста; в противном случае возвращается null
. С помощью связанных операторов //
мы выбираем первое значение из трех, которое не является null
, если смотреть через n
, или пустую строку, если все три значения равны null
.
Тестирование вышеуказанного в командной строке с вашими данными:
$ jq 'def n: if. == "" then null else. end;.Severity = ((.abc_severity|n) // (.def_severity|n) // (.ghi_severity|n) // "")' file
{
"name": "0230",
"publish_date": "2007-08-18",
"abc_severity": "",
"def_severity": "medium",
"ghi_severity": "negligible",
"Severity": "medium"
}