Попробуйте это
awk '
/string *"xesam:artist/{
while (1) {
getline line
if (line ~ /string "/){
sub(/.*string "/, "artist:", line)
sub(/".*$/, "", line)
print line
break
}
}
}
/string *"xesam:title/{
while (1) {
getline line
if (line ~ /string "/){
sub(/.*string "/, "title:", line)
sub(/".*$/, "", line)
print line
break
}
}
}
' variantArraySample.txt
Дает вывод
artist:The Black Keys
title:Give Your Heart Away
Предполагается, что между входом всегда будет как минимум 1 строчная разница, т.е.* То есть, если все ваши данные свернуты в одну строку, это потребует дополнительной логики, поэтому
string "xesam:title" variant string "Give Your Heart Away"
(например), потребует изменений в приведенном выше сценарии.
Дайте мне знать, если вам нужна помощь в дальнейшем форматировании вывода.
Надеюсь, это поможет.