staging.inyokaproject.org

Shell-Skript: Text ersetzen in CSV Datei

Status: Ungelöst | Ubuntu-Version: Ubuntu 22.10 (Kinetic Kudu)
Antworten |

fsdiofnsdifbhisd

Anmeldungsdatum:
16. Juli 2010

Beiträge: Zähle...

Folgendes habe ich vor:

CSV-Datei:

1
2
Artikel;Bilder
123;Bild1.jpg,Bild2.jpg,Bild3.jpg

Hier soll die Spalte "Bilder" vor jedem Bild ein fester Wert (URL-Pfad) davorgesetzt werden. Beispielsweise "https://download.domain.com/"

CSV-Datei:

1
2
Artikel;Bilder
123;https://download.domain.com/Bild1.jpg,https://download.domain.com/Bild2.jpg,https://download.domain.com/Bild3.jpg

Wie kann ich das realisieren?

shiro

Anmeldungsdatum:
20. Juli 2020

Beiträge: 611

Das kann man mit awk machen.

$ echo "Artikel;Bilder
123;Bild1.jpg,Bild2.jpg,Bild3.jpg" | 
awk -F";" -v sHdr="Bilder" -v url="https://download.domain.com/" -v trenn="," '{if(NR==1){OFS=FS;for(i=1;i<=NF;i++){if($i==sHdr)s=i}}else{gsub(trenn,trenn url,$s);$s=url $s};print $0}'
Artikel;Bilder
123;https://download.domain.com/Bild1.jpg,https://download.domain.com/Bild2.jpg,https://download.domain.com/Bild3.jpg
$

Das csv Trennzeichen ist ";", der Spalten-Header (sHdr) ist "Bilder", das Bilder-Trennzeichen (trenn) ist ",". Das kann man zwar kürzer schreiben, aber ich fand das so verständlicher.

Antworten |