отредактируйте файл json, используя вывод другого многострочного файла - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть файл JSON, и мне нужно отредактировать его, используя значение из другого файла. Файл, значение которого необходимо применить к файлу json, является многострочным файлом

Здесь я использую оболочку jenkins groovy для вывода содержимого файла xyz.txt в переменную с именем file, которую можно использоватьотредактировать файл json.

sh '''file=`cat xyz.txt`
      printf '{ "body": "" }' > myfile.json
      sed ...................
'''

Теперь, используя вышеизложенное, у меня есть файл json, подобный приведенному ниже

{ "body": "" }

Но я хотел бы заменить пустые кавычки "" рядом с "body "со значением из вывода xyz.txt, которое означает значение $ {file} и, следовательно, является многострочным с отдельными строками.

Как мне это сделать, возможно, используя sed или что-то еще?

Ответы [ 2 ]

1 голос
/ 07 ноября 2019

С учетом флагов -R / - raw-input и -s / - slurp jq делает содержимое входного файла доступным через фильтр .. Это может быть использовано для вашей цели, как это:

jq -Rs '{body:.}' xyz.txt > myfile.json
0 голосов
/ 07 ноября 2019

Используя только Groovy, вы можете загрузить json и другой файл, изменить содержимое загруженного json так, как вам нравится, а затем записать измененный json. Например,

def myjson = new groovy.json.JsonSlurper().parse("/tmp/myjson.json" as File)
myjson.body = ("/tmp/xyz.txt" as File).text
def result = groovy.json.JsonOutput.toJson(myjson)
println result
// ⇒ {"body":"TEST\n"}
...