सीएसवी फाइल इस तरह से होना:
HEADER
"first, column"|"second "some random quotes" column"|"third ol' column"
FOOTER
और परिणाम की तलाश में जैसे:
HEADER
first, column|second "some random quotes" column|third ol' column
दूसरे शब्दों में "FOOTER" को हटाते हुए, शुरुआत, अंत और आसपास के उद्धरण |
अब तक यह कोड काम करता है:
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
जैसा कि आप देखते हैं कि समस्या यह है कि यह 4 अतिरिक्त फाइलें बनाता है।
यहां एक और समाधान है, जिसका लक्ष्य है कि अतिरिक्त फ़ाइलों का निर्माण न करना और एकल स्क्रिप्ट में समान कार्य करना। यह बहुत अच्छी तरह से काम नहीं करता है।
#!/bin/ksh
sed '/begin/, /end/ {
/FOOTER/d
s/^\"//
s/\"$//
s/\"|\"/|/g
}' csv > csv4
sed
उस के साथ काम करने वाला नहीं है, केवल सरलीकृत सीएसवी के साथ। लाइब्रेरी के साथ एक प्रोग्रामिंग भाषा का उपयोग करें जो वास्तविक CSV फ़ाइलों (पायथन / पर्ल / रूबी) को संभाल सकती है।