staging.inyokaproject.org

Ausgabe von openstack in CSV konvertieren

Status: Gelöst | Ubuntu-Version: Server 22.04 (Jammy Jellyfish)
Antworten |

c.monty

Anmeldungsdatum:
23. August 2007

Beiträge: 277

Hallo,

für die weitere Bearbeitung möchte ich die Ausgabe des Befehls

1
$ share_locations=$(openstack share show -c name -c export_locations -f value "$share_id")

in CSV konvertieren.

Die Ausgabe enthält 2 oder mehr Triple-Werte in diesem Format:

$ echo $share_locations
id = 5a4bcce6-cd43-4f95-a296-cb4c7a7c17c1 path = 10.180.0.209:/share_40dc7a34_4750_40f3_ae3f_48f536977aaa preferred = True id = 8089cd2e-1480-4c6e-afc6-7ebaa7f70f55 path = 10.180.0.163:/share_40dc7a34_4750_40f3_ae3f_48f536977aaa preferred = False backupZ99

Das heißt, es ist ein String ohne Zeilenumbrüche.

Die CSV sollte nach der Konvertierung so aussehen:

name,id,path,preferred
backupZ99,5a4bcce6-cd43-4f95-a296-cb4c7a7c17c1,10.180.0.209:/share_40dc7a34_4750_40f3_ae3f_48f536977aaa,true
backupZ99,8089cd2e-1480-4c6e-afc6-7ebaa7f70f55,10.180.0.163:/share_40dc7a34_4750_40f3_ae3f_48f536977aaa,false

Mit welchem Bash Script lässt sich diese CSV erstellen?

THX

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 12527

c.monty schrieb:

Das heißt, es ist ein String ohne Zeilenumbrüche.

Bist Du sicher?

1
2
3
4
5
6
7
$ v=$(printf 'a\nb\n')
$ echo $v
a b
$ echo "$v"
a
b
$

c.monty

(Themenstarter)

Anmeldungsdatum:
23. August 2007

Beiträge: 277

Nein, meine Angabe ist falsch.

Der Input-String enthält Zeilenumbrüche. Die kann ich aber entfernen durch:

1
input_string=$(echo "$share_locations" | sed 's/ = /=/g' | tr '\n' ' ')

shiro

Anmeldungsdatum:
20. Juli 2020

Beiträge: 611

Meinst du so was?

share_locations="id = 5a4bcce6-cd43-4f95-a296-cb4c7a7c17c1 path = 10.180.0.209:/share_40dc7a34_4750_40f3_ae3f_48f536977aaa preferred = True id = 8089cd2e-1480-4c6e-afc6-7ebaa7f70f55 path = 10.180.0.163:/share_40dc7a34_4750_40f3_ae3f_48f536977aaa preferred = False backupZ99"

name=${share_locations##* }

echo "name,id,path,preferred"
echo ${share_locations% *} | sed "s/id = /\n$name,/g;s/ path = /,/g;s/ preferred = /,/g"

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 12527

c.monty schrieb:

Der Input-String enthält Zeilenumbrüche.

Aha!

Die kann ich aber entfernen durch:

Warum? Zeig doch erst mal, die die Ausgabe genau aussieht.

Antworten |