Я пытаюсь создать скрипт для преобразования дампов postgres CSV в дампы Oracle csv. Ака, я пытаюсь заменить «true» на «Y» и «false» на «N».
Поэтому я хочу скрипт под названием to_oracle, например:
echo "false,false,false,true" | to_oracle
N,N,N,Y
вот моя попытка:
sed -E -e 's:(,|^)true(,|$):\1Y\2:g' -e 's:(,|^)false(,|$):\1N\2:g' "$@"
Логика заключается в том, что поле в CSV-файле начинается либо с начала строки, либо с запятой "," и заканчивается либо концом строки, либо запятой ","
Проблема с этим сценарием в том, что он жадно поглощает запятую, и поэтому каждое второе поле не работает:
echo "false,false,false,true" | to_oracle
N,false,N,Y
Теперь я полагаю, что могу дважды передать его в сценарий,и это сделало бы работу, но мне интересно, есть ли более элегантное решение?