sed: -e выражение # 1, char 11: неизвестная опция для `s '

Я хочу удалить запятую и получить эту ошибку -

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}"
0
задан 29 August 2019 в 20:57

2 ответа

Правильный синтаксис: 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
0
ответ дан 23 October 2019 в 04:02

Формат 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 пакет (который правильно заключит поля в кавычки, позволяя Вам сохранить запятые в разделенном от запятой формате) вместо того, чтобы пытаться обработать их на специальной основе.

0
ответ дан 23 October 2019 в 04:02

Другие вопросы по тегам:

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