Прежде всего, я хотел бы сказать, что я искал исчерпывающе для этого решения. Важно, чтобы я использовал sed
или, по крайней мере, сочетание утилит командной строки * nix, чтобы решить эту проблему. В некоторых случаях я имею дело с некорректными CSV-файлами, но я уверен, что он разрешимый. Мне не хватает всего одного куска головоломки.Использование sed для очистки CSV-файла
Я хотел бы построить преобразователь из CSV в трубу. Он должен решить следующие вопросы:
- Газа из
","
и заменить|
- Газа из
",
и заменить|
- Газа из
,"
и заменить|
- Газа из цитаты в кавычки как :
dog,"john "bud" smith",cat
(будетdog|john bud smith|cat
) - Полоса
,
, которые не являются подростковые цитаты и заменить|
я закончил почти все это с командой sed
, но я озадачен с запятыми, которые находятся в пределах поля. Скорее всего, лучший способ, но у меня заканчивается творческая мысль по этой теме. Правильное решение будет анализировать эту строку:
1234,"bill","butler","1000,p"r"airie",1234,6789
в
1234|bill|butler|1000,prairie|1234|6789
Это то, что я до сих пор:
echo '1234,"bill","butler","1000,p"r"airie",1234,6789' |
sed -e 's/","/|/g' -e 's/,"/|/g' -e 's/",/|/g' -e 's/"//g'
как вы отличаете 'дворецкий, 1000' от' 1000, praire' – aelor
Вы можете найти http://programmers.stackexchange.com/questions/166454/can-the-csv-format -be-defined-by-a-regex полезно и актуально для вашего вопроса. – Edward
У вас есть правильно сформированные кавычки внутри кавычек ('' john "" bud "" smith "), как описано в [RFC 4180 Comma-Separated Values] (http://tools.ietf.org/html/rfc4180) иметь дело с? Вы хотите, чтобы эти цитаты удалялись? Что делать, если что-нибудь, о трубах, которые уже появляются во входных данных? Выполнение этой работы очень сложно. –