последняя :команда не найдена после обновления CentOS

С вашим файлом проблем нет. Он имеет встроенные символы новой строки и двойные кавычки. Парсер CSV сможет правильно с этим справиться. Экранирование двойных кавычек с помощью"(при двойном заключении в кавычки поля )— правильный способ избежать встроенных двойных кавычек в файле CSV.

Чтобы заменить встроенные символы новой строки в файле CSV на символ @, вы можете сделать это:

$ csvformat -M '@' file.csv | tr '\n@' '@\n'
1,abc,Line 1
2,def,"Line2@""line2"",line2"
3,ghi,line3

Здесь используется csvformatиз набора инструментов csvkit . Это правильный парсер CSV, способный переформатировать файлы CSV.

Приведенный выше конвейер команд сначала заменяет все символы новой строки, в которые не встроены с символом @. Затем я использую trдля замены оставшихся символов новой строки и символов @друг с другом, в результате чего получается CSV-файл, в котором встроенные символы новой строки @.

Это связано с тем, что исходные данные в файле не содержат символов @.

Если затем вы хотите использовать пробелы вместо маркера того места, где изначально были новые строки, используйте tr '\n@' ' \n'вместо tr, показанного выше:

$ csvformat -M '@' file.csv | tr '\n@' ' \n'
1,abc,Line 1
2,def,"Line2 ""line2"",line2"
3,ghi,line3

Обратите внимание, что это чрезвычайно затруднит повторную -вставку исходных символов новой строки, если в данных (есть другие пробелы, как в третьем поле первой строки ). ].

Если вы предпочитаете, чтобы csvformatне удалял все ненужные двойные кавычки, используйте его с-U 1:

$ csvformat -U 1 -M '@' file.csv | tr '\n@' ' \n'
"1","abc","Line 1"
"2","def","Line2 ""line2"",line2"
"3","ghi","line3"

0
12.04.2021, 09:23
0 ответов

Теги

Похожие вопросы