С учетом ввода в этой форме
[
{
"DIR" : "/foo/bar/a/b/c",
"OUT" : "/foo/bar/x/y/z",
"ARG" : [ "aaa", "bbb", "/foo/bar/a", "BASE=/foo/bar" ]
},
{
"DIR" : "/foo/baz/d/e/f",
"OUT" : "/foo/baz/x/y/z",
"ARG" : [ "ccc", "ddd", "/foo/baz/b", "BASE=/foo/baz" ]
},
{
"foo" : "bar"
}
]
Я пытаюсь выяснить, как заставить jq преобразовать это в следующее:
[
{
"DIR" : "BASE/a/b/c",
"OUT" : "BASE/x/y/z",
"ARG" : [ "aaa", "bbb", "BASE/a", "BASE=/foo/bar" ]
},
{
"DIR" : "BASE/d/e/f",
"OUT" : "BASE/x/y/z",
"ARG" : [ "ccc", "ddd", "BASE/b", "BASE=/foo/baz" ]
},
{
"foo" : "bar"
}
]
Другими словами, объекты, имеющие массив "ARG"
, содержащий строку, начинающуюся с "BASE="
, должны использовать строку после "BASE="
, например, "/foo"
для замены других строковых значений, которые начинаются с "/foo"
(кроме "BASE=/foo"
, который должен остаться без изменений")
Я даже не близок к тому, чтобы найти решение сам, и на данный момент я не уверен, что только jq сделает эту работу.