Shell-Skript – umschließende Anführungszeichen (sowohl einfache als auch doppelte) aus einem Wert in einem Schlüssel/Wer
Posted: 16 Jan 2025, 07:10
Ich habe eine Datei file.txt wie unten, die Schlüsselwertpaare enthält, die durch ein Doppelpunkt-Leerzeichen (:) getrennt sind.
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 =.
Ich habe awk ausprobiert
aber ich erhalte die folgende Ausgabe. Es schlägt fehl, wenn der Wert ein Doppelpunkt-Leerzeichen enthält.
Habe auch den folgenden SED ausprobiert, der das gleiche Problem wie awk hat.
Gibt es eine Möglichkeit, dies mit wenigen Codezeilen unter Unix zu erreichen?
Code: Select all
key1: "Subject %D: %W warning(s), %V Violation(s)"
key2: 'sample: value'
key3: "value3"
key4: 'value4'
Code: Select all
key1=Subject %D: %W warning(s), %V Violation(s)
key2=sample: value
key3=value3
key4=value4
Code: Select all
awk -F': ' '{ gsub(/^'\''|'\''$/, "", $2); gsub(/^'\"'|'\"'$/, "", $2); print }' OFS='='
Code: Select all
key1=Subject %D=%W warning(s), %V Violation(s)"
key2=sample=value'
key3=value3
key4=value4
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