Shell-Skript – umschließende Anführungszeichen (sowohl einfache als auch doppelte) aus einem Wert in einem Schlüssel/WerLinux

Linux verstehen
Guest
 Shell-Skript – umschließende Anführungszeichen (sowohl einfache als auch doppelte) aus einem Wert in einem Schlüssel/Wer

Post by Guest »

Ich habe eine Datei file.txt wie unten, die Schlüsselwertpaare enthält, die durch ein Doppelpunkt-Leerzeichen (:) getrennt sind.

Code: Select all

key1: "Subject %D: %W warning(s), %V Violation(s)"
key2: 'sample: value'
key3: "value3"
key4: 'value4'
Ich möchte die Ausgabe wie folgt. Entfernen Sie grundsätzlich alle einfachen oder doppelten Anführungszeichen aus dem Wert und ersetzen Sie das Doppelpunkt-Leerzeichen durch =.

Code: Select all

key1=Subject %D: %W warning(s), %V Violation(s)
key2=sample: value
key3=value3
key4=value4
Ich habe awk ausprobiert

Code: Select all

awk -F': ' '{ gsub(/^'\''|'\''$/, "", $2); gsub(/^'\"'|'\"'$/, "", $2); print }'  OFS='='
aber ich erhalte die folgende Ausgabe. Es schlägt fehl, wenn der Wert ein Doppelpunkt-Leerzeichen enthält.

Code: Select all

key1=Subject %D=%W warning(s), %V Violation(s)"
key2=sample=value'
key3=value3
key4=value4
Habe auch den folgenden SED ausprobiert, der das gleiche Problem wie awk hat.

Code: Select all

sed -i -e "s/: '/=/" -e "s/'$//" -e 's/: "/=/' -e 's/"$//' -e "s/: /=/" file.txt

Code: Select all

key1=Subject %D=%W warning(s), %V Violation(s)
key2=sample=value
key3=value3
key4=value4
Gibt es eine Möglichkeit, dies mit wenigen Codezeilen unter Unix zu erreichen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post