Сценарий оболочки — удаление закрывающих кавычек (как одинарных, так и двойных) из значения в паре ключ/значение.Linux

Anonymous
Сценарий оболочки — удаление закрывающих кавычек (как одинарных, так и двойных) из значения в паре ключ/значение.

Сообщение Anonymous »

У меня есть файл file.txt, как показано ниже, который содержит пары значений ключа, разделенные двоеточием (:).

Код: Выделить всё

key1: "Subject %D: %W warning(s), %V Violation(s)"
key2: 'sample: value'
key3: "value3"
key4: 'value4'
Мне нужен результат, как показано ниже. По сути, удалите все одинарные или двойные кавычки из значения и замените двоеточие на =.

Код: Выделить всё

key1=Subject %D: %W warning(s), %V Violation(s)
key2=sample: value
key3=value3
key4=value4
Я пробовал awk

awk -F': ' '{ gsub(/^'''|'''$/, "", $2) ; gsub(/^'"'|'"'$/, "", $2); print }' OFS='='
но я получаю вывод, как показано ниже. Ошибка, если в значении есть двоеточие.

Код: Выделить всё

key1=Subject %D=%W warning(s), %V Violation(s)"
key2=sample=value'
key3=value3
key4=value4
Также попробовал приведенный ниже sed, у которого возникла та же проблема, что и у awk.
sed -i -e "s/: '/=/" -e "s/'$/ /" -e 's/: "/=/' -e 's/"$//' -e "s/: /=/" file.txt

Код: Выделить всё

key1=Subject %D=%W warning(s), %V Violation(s)
key2=sample=value
key3=value3
key4=value4
Есть ли способ сделать это с помощью нескольких строк кода в Unix?

Подробнее здесь: https://stackoverflow.com/questions/793 ... value-in-a

Вернуться в «Linux»