Bunun gibi bir CSV dosyasına sahip olmak:
HEADER
"first, column"|"second "some random quotes" column"|"third ol' column"
FOOTER
ve şöyle bir sonuç arıyorum:
HEADER
first, column|second "some random quotes" column|third ol' column
Başka bir deyişle, "FOOTER" ifadesini kaldırmak, başında, sonunda ve çevresinde |
Şimdiye kadar bu kod çalışıyor:
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
Gördüğünüz gibi 4 ekstra dosya oluşturuyor.
İşte, fazladan dosyalar yaratmamak ve aynı şeyi tek bir komut dosyasında yapmak gibi bir amacı olan başka bir çözüm. Çok iyi çalışmıyor.
#!/bin/ksh
sed '/begin/, /end/ {
/FOOTER/d
s/^\"//
s/\"$//
s/\"|\"/|/g
}' csv > csv4
sed
sadece basitleştirilmiş csv ile, bunda işe gitmiyor. Gerçek CSV dosyalarını (Python / Perl / Ruby) işleyebilen bir kitaplık içeren bir programlama dili kullanın.