Сценарий оболочки — удаление закрывающих кавычек (как одинарных, так и двойных) из значения в паре ключ/значение.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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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