Я хочу удалить запятую и получить эту ошибку -
sed: -e expression #1, char 11: unknown option to `s'
Скрипт, который я использую - -
# convert from tsv to csv
sed 's/,/\g; s/\t/,/g' "${tsv_file}" >> "${csv_file}"
Правильный синтаксис: sed 's/ReplaceThisText/ByThis/g'
sed -e 's/,//g' -e 's/\t/,/g' "${tsv_file}" >> "${csv_file}"
# replace comma by nothing, then replace tab by comma
-e
опция дает способность объединить действия в цепочку
-e script, --expression=script
add the script to the commands to be executed
Формат sed команды (s
) замены
s/pattern/replacement/flags
так в s/,/\g; s/\t/,/g
, он интерпретирует ,
как шаблон, \g; s
как замена, уезжая \t/,/g
как последовательность флагов. С тех пор \t
не допустимый флаг, это - ошибка.
, По-видимому, то, что Вы предназначили, было
sed 's/,//g; s/\t/,/g' "${tsv_file}" >> "${csv_file}"
, чтобы удалить все запятые и затем преобразовать разделители вкладки в разделители запятой. Однако, если у Вас есть файл TSV, который содержит запятые, Вы могли бы хотеть рассмотреть использование выделенного инструмента форматирования CSV такой как csvformat
от csvkit
пакет (который правильно заключит поля в кавычки, позволяя Вам сохранить запятые в разделенном от запятой формате) вместо того, чтобы пытаться обработать их на специальной основе.