Eine CSV-Datei wie diese haben:
HEADER
"first, column"|"second "some random quotes" column"|"third ol' column"
FOOTER
und auf der Suche nach Ergebnis wie:
HEADER
first, column|second "some random quotes" column|third ol' column
mit anderen Worten: Entfernen von "FOOTER", Anführungszeichen am Anfang, Ende und um |.
Bisher funktioniert dieser Code:
sed '/FOOTER/d' csv > csv1 | #remove FOOTER
sed 's/^\"//' csv1 > csv2 | #remove quote at the beginning
sed 's/\"$//' csv2 > csv3 | #remove quote at the end
sed 's/\"|\"/|/g' csv3 > csv4 #remove quotes around pipe
Wie Sie sehen, werden 4 zusätzliche Dateien erstellt.
Hier ist eine andere Lösung, die das Ziel hat, keine zusätzlichen Dateien zu erstellen und dasselbe in einem einzigen Skript zu tun. Das funktioniert nicht sehr gut.
#!/bin/ksh
sed '/begin/, /end/ {
/FOOTER/d
s/^\"//
s/\"$//
s/\"|\"/|/g
}' csv > csv4
sed
wirst damit nicht arbeiten, nur mit vereinfachtem csv. Verwenden Sie eine Programmiersprache mit einer Bibliothek, die echte CSV-Dateien verarbeiten kann (Python / Perl / Ruby).